在c#中有一个伟大的运算符'??'这使生活变得更简单。我可以写foo ?? default
而不是写(foo != null)? foo : default
。有没有一种简单的方法可以将这个操作符应用于类别memeber,例如在情况(foo != null)? foo.bar : default
?是否可以使用?班级成员的操作员?
UPD: OK,我会expalin了一下:
string a = (someVeryLongVariableName != null)? someVeryLongVariableName : ""; // Long way
string a = someVeryLongVariableName ?? ""; // Shorter with same result
string a = (someVeryLongVariableName != null)? someVeryLongVariableName.bar : ""; // What's the shorter way in this case?
UPD2:情况时,我需要这个功能看起来是这样的:
if (foo is MyClass) bar1 = (foo as MyClass).SpecificMember;
if (foo is OneMoreClass) bar2 = (foo as OneMoreClass).AnotherSpecificMember;
if (foo is MyFavoriteClass) bar3 = (foo as MyFavoriteClass).YetAnotherMember;
这将是冷静,如果我可以缩短这些东西像
bar1 = (foo as MyClass).SpecificMember ?? null;
也许它并不会更短,但它只会将foo转换为MyClass一次,并显式初始化具有默认值的栏。最重要的是它看起来更好。
什么是不简单的写作(foo!= null)? foo.bar:默认?? – 2010-12-05 02:33:35
什么?我不确定你会变得更简单...我错过了什么吗? – IAbstract 2010-12-05 02:35:47