Abe*_*ler 11 .net c# asp.net null-coalescing-operator
我想我记得在C#中看到类似于?:三元运算符的东西,它只有两个部分,如果不是null则返回变量值,如果是,则返回默认值.像这样的东西:
tb_MyTextBox.Text = o.Member ??SOME OPERATOR HERE?? "default";
Run Code Online (Sandbox Code Playgroud)
基本上相当于这个:
tb_MyTextBox.Text = o.Member != null ? o.Member : "default";
Run Code Online (Sandbox Code Playgroud)
这样的事情是存在的吗?我只是想象在某个地方看到这个?
Pet*_*ete 25
对:
tb_myTextBox.Text = o.Member ?? "default";
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/ms173224(VS.80).aspx
Jon*_*eet 19
好吧,它与条件运算符不完全相同,但我认为你正在考虑空合并运算符(??).(我猜你确实说它"相似":)注意"三元"只是指操作符所在的操作数 - 所以当条件运算符是三元运算符时,空合并运算符是二元运算符.
它大致采用以下形式:
result = first ?? second;
Run Code Online (Sandbox Code Playgroud)
这里second只会被评估first为null.它不必是赋值的目标 - 例如,您可以使用它来计算方法参数.
请注意,第一个操作数必须是可空的 - 但第二个操作数不可以.尽管有一些关于转换的具体细节,但在简单的情况下,整个表达式的类型是第二个操作数的类型.由于关联性,您也可以整齐地堆叠运算符的使用:
int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();
int result = x ?? y ?? z;
Run Code Online (Sandbox Code Playgroud)
注意如何x和y是空的,但z并result没有.当然,z 可以是可以为空的,但那时result也必须是可以为空的.
基本上,操作数将按它们在代码中出现的顺序进行评估,并在找到非空值时停止评估.
哦,虽然以上是以值类型的形式显示的,但它也适用于引用类型(它们总是可以为空).
| 归档时间: |
|
| 查看次数: |
12034 次 |
| 最近记录: |