2008-09-17 24 views
7

aşağıdaki dönerSteno halinde + null türler (C#)

arasında kapalı dönüştürme çünkü koşullu ifade tipi tespit edilemez 'çift' ve '< boş >'

aNullableDouble = (double.TryParse(aString, out aDouble) ? aDouble : null) 

Çift Taraflı Yolculuk yerine Çift Katlı Yolculuk kullanamamasının sebebi, bir Çift Taraflı Yolun, oluşturulan bir Ent'in bir özelliğidir. outy olarak kullanılamayan ityFramework sınıfı.

cevap

9
aNullableDouble = double.TryParse(aString, out aDouble) ? (double?)aDouble : null; 
1
aNullableDouble = (double.TryParse(aString, out aDouble)?new Nullable<double>(aDouble):null) 
+0

Yeni Nullabled() ?! Bu çift değil mi? sözdizimi için ?! – ljs

+0

Evet, bu da işe yarayacak. Benimki daha açık, ama her iki form da aynı kodu üretecek. –

7

Sadece ... daha kolay okunur olacak yerine kestirme tam sözdizimi içine sözdizimi darbe:

aNullableDouble = null; 
if (double.TryParse(aString, out aDouble)) 
{ 
    aNullableDouble = aDouble; 
} 
+0

Güzel. Bu netlik katıyor. – ljs

0

.NET nullable types destekler ancak bunları ilan ederek Bu şekilde onlara biraz farklı davranmak zorundasınız (anlaşılır bir şekilde, normalde şimdi bir değer türü olan bir şey tür-referanstır).

Bu, yinelenen çiftler ve düzenli çiftler arasında çok fazla dönüşüm yapmak zorunda kalmanız halinde, otomatik olarak oluşturulan bir grup kümesinde olduğu gibi kolaylıkla sonuçlanabiliyorsa, çok yardımcı olmayabilir.

1

NULL türlerini kullanmanın ilginç yan etkisi, gerçekten bir shorthand IF kullanamazsınız. Shorthand IF, aynı Türü her iki koşuldan döndürmelidir ve her iki durumda da boş olamaz. Öyleyse, dökün ya da yazınız :)