2011-01-13 8 views
2

Richtig, also habe ich dieses Stück Code, der Standardwerte für Eigenschaften in C# initialisiert. Quelle: http://www.codeproject.com/KB/dotnet/DefValInit.aspxAnweisung, die ich nicht ganz verstehe (setter = (o) => {};)

Jetzt habe ich es in C++ Code neu geschrieben, die leider nicht Erweiterungen nicht unterstützt, aber das Objekts an den ApplyDefaultValues ​​Versorgung als gut funktioniert.

Eine Zeile, die ich nicht in der Lage war zu C++ neu zu schreiben sind die Linien dieser Ausdruck enthält:

setter = (o) => { }; 

Ich würde gerne wissen, ob jemand weiß, was diese Zeile tut. Google gab keine Ergebnisse

+2

ich vermute, Sie sprechen nicht über C++/CLI, Also, welchen C++ - Mechanismus verwenden Sie, um .NET-Delegaten darzustellen? – AakashM

+0

Wahr, dieses Stück Code ist C# aus dem Link zu Codeprojekt, das ich gepostet habe (es ist in der Zip-Datei). Ich habe alles von C# zu C++/CLI umgeschrieben, um es in meiner C++/CLI gemeinsamen Bibliothek zu verwenden –

+0

Es ist ein Zyklop mit einem Spitzbart! – Axeman

Antwort

4

Setter vom Typ wäre Action<T>, wo die o eine Instanz vom Typ T ist es eine Lambda ist eine „Funktion "das kann in Code aufgerufen werden:

Action<object> setter = (o) => { }; 
setter(new object()); 

in diesem Fall wird die Funktion nichts tut, irgendwie ein null-Objekt für etwas vom Typ Aktion

+0

Richtig, ich verstehe es, ich denke, die (o) ist die Parameter/Argument-Liste für die Lambda-Funktion und {} wäre der Körper? Nur um sicherzustellen, dass wenn Sie Setter aufrufen (neues Objekt()); ohne etwas zugewiesen zu haben, würde keinen Fehler verursachen. –

+0

Korrigieren Sie über Argument und Körper. Wenn Sie dem Setter jedoch keinen Wert zuweisen, wird die Verwendung einer Nullreferenzausnahme tatsächlich verursacht. Daher das "Null-Objekt" -Muster. Sie können es anrufen, es gibt keine Ausnahme, Sie müssen nicht nach Null suchen und es treten keine Nebenwirkungen auf. – flq

+0

Richtig, danke. Ich habs ;-) –

1

Es ist eine Lambda-Funktion, die einen einzigen Parameter und tut nichts

Verwandte Themen