2011-10-07 26 views
5

this question'u gördüm ama ?? Bir null kontrol olarak operatör, ben bir bool gerçek/yanlış testi olarak kullanmak istiyorum. C#C# 's koşullu işlecinin Python sürümü (?)

if self.trait == self.spouse.trait: 
    trait = self.trait 
else: 
    trait = defualtTrait 

bu kadar yazabilirsiniz:

trait = this.trait == this.spouse.trait ? this.trait : defualtTrait; 

Python bunu yapmanın benzer bir yolu var mı

Python içinde bu kodu var?

+1

C#: tüm diğerleri boş olduğunu bu aslında ise Örneğin, C# yazmak istiyorum ne ilk boş olmayan özelliği ya da varsayılan bir özelliği dönmek için? operatör bunu yapmak için. –

+0

C# Kullanıyor gibi görünüyor? Başka şekilde kullanabileceğin operatör? Şebeke. Ne olursa olsun, eğer kodunuz işe yarıyorsa ve anlıyorsanız, sapma için bir neden göremiyorum. Açık ve net. Elbette, birkaçının gösterdiği gibi bir tek katlı olarak çevirebilirsiniz, ancak sonuç aynı şekilde etkilidir. –

+0

@WinstonEn iyi davranıyorsunuz. Benim hatam. Sorumu diğer insanlara yardımcı olmak için düzenleyeceğim. –

cevap

10

Evet, yazabilirsiniz: Bu Python için Conditional Expression denir

trait = self.trait if self.trait == self.spouse.trait else defaultTrait 

.

1

C# 'de boş birleştirme işlecinde, sorudaki doğru bir kullanım değil. Bu derleme zamanında başarısız olur.

C#

, doğru yolu bu olacaktır denemeden şeyi yazmak için:

trait = this.trait == this.spouse.trait ? self.trait : defaultTrait 

C# null kaynaşabilecek değerlerinin bir zincirde boş (ya eğer boş değil ilk değeri döndürür boş olmayan değerler yoktur). Yalnızca ihtiyaç

trait = this.spouse.trait ?? self.trait ?? defaultTrait; 
+0

Doğru, ben: koşullu operatör düşünüyordum ve yazdı? null-birleştirici operatör. Benim hatam. –