2010-02-10 18 views

Antwort

4

Nicht, dass ich mir dessen bewusst bin. Ziemlich sicher, dass Ihre einzige Option ist es, wie dies zu tun:

Request request = new Request 
{ 
    Property1 = something1, 
    Property3 = something3 
}; 
if(something) 
    request.Property2 = someting2; 

Oder man könnte es so machen, wenn es ein default/Nullwert Sie es einrichten können:

Request request = new Request 
{ 
    Property1 = something1, 
    Property2 = something ? someting2 : null, 
    Property3 = something3 
}; 
2

Nr Objekt initialisers in eine stumme Folge von Set-Anweisungen übersetzt.

Offensichtlich können Sie Hacks machen, um etwas Ähnliches zu erreichen, wie das Setzen der Eigenschaft auf das, was Sie wissen, der Standardwert (zB new Request { Property2 = (something ? something2 : null) }), aber der Setter wird immer noch aufgerufen - und natürlich wird dies unbeabsichtigte Folgen haben wenn der Implementierer von Request beschließt, den Standardwert der Eigenschaft zu ändern. Am besten vermeiden Sie diese Art von Trick und machen Sie eine bedingte Initialisierung, indem Sie explizite set-Anweisungen in der alten Pre-Object-Initialiser-Art schreiben.

0

Nein, da diejenigen, sind statische Aufrufe, die zur Laufzeit nicht entfernt oder hinzugefügt werden können.

Sie den Wert bedingt ändern kann, etwa so:

Foo foo = new Foo { One = "", Two = (true ? "" : "bar"), Three = "" }; 
Verwandte Themen