2010-02-10 24 views

cevap

4

Farkında olduğumdan değil.

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

Yoksa olarak ayarlayabilirsiniz varsayılan/boş değer varsa bunu şöyle yapabiliriz: Oldukça emin tek seçenek böyle yapmak etmektir

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

sayılı nesne olan başlatıcı grubu tabloların aptal dizisi halinde ters çevrilmektedir.

Açıkçası, benzer bir şey elde etmek için, varsayılan değeri (örneğin, new Request { Property2 = (something ? something2 : null) }) bildiğiniz gibi özellik ayarlama, ancak setter'ın hala çağrılacağı gibi, hackler yapabilirsiniz ve tabii ki bunun istenmeyen sonuçları olacaktır. Talebin uygulayıcısı, mülkün varsayılan değerini değiştirmeye karar verirse. Bu tür bir hileden kaçınmak ve eski ön-nesne-başlatıcı şekilde açık set ifadeleri yazarak herhangi bir koşullu başlatma yapmak en iyisidir.

0

Hayır o yana, Statik çağrılardır, bazı koşullara bağlı olarak çalışma zamanında kaldırılamaz veya eklenemezler.

Sen şartlı değerini değiştirmek şöyle olabilir

:

Foo foo = new Foo { One = "", Two = (true ? "" : "bar"), Three = "" }; 
İlgili konular