我想我记得看到类似的东西 ?:三元操作员 在仅有两个部分的C#中,如果它不是null和默认值,则会返回变量值。这样的事情:

tb_MyTextBox.Text = o.Member ??SOME OPERATOR HERE?? "default";

基本上相当于:

tb_MyTextBox.Text = o.Member != null ? o.Member : "default";

这样的东西是否存在,还是我只是想象在某个地方看到这个?

有帮助吗?

解决方案

是的:

tb_myTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en-us/library/ms173224(vs.80).aspx

其他提示

好吧,它与 有条件的操作员, ,但我想你在想 零合并操作员 (??)。 (我想您确实说它是“类似的” :)请注意,“三元”只是指操作数的数量 - 因此,当条件操作员是三元操作员时,零凝聚运算符是二进制运算符。

它广泛采用这种形式:

result = first ?? second;

这里 second 仅在评估 first 一片空白。它不必是作业的目标 - 例如,您可以使用它来评估方法参数。

请注意,第一个操作数 拥有 可以无效 - 但第二个事实并非如此。尽管有关转化有一些具体细节,但在简单的情况下,总体表达式的类型是第二操作数的类型。由于关联性,您也可以整齐地堆叠操作员的使用:

int? x = GetValueForX();
int? y = GetValueForY();
int z = GetValueForZ();

int result = x ?? y ?? z;

注意如何 xy 可以无效,但是 zresult 不是。当然, z 可以 不可否认,但是 result 也必须是无效的。

基本上,操作数将按照它们在代码中的顺序进行评估,当评估找到非零值时,评估会停止。

哦,尽管以上显示了价值类型,但它也与参考类型一起使用(这是 总是 无效)。

有趣的是,您用“?在这里?

tb_MyTextBox.Text = o.Member ?? "default";

http://msdn.microsoft.com/en-us/library/ms173224.aspx

是的,这称为NULL合并操作员:

?操作员(C#参考)(MSDN)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top