C#是否与JavaScript的赋值语法var x = y || z;
等效?如果您不知道,结果不是true/false
。如果定义了y
,则会将其分配给x
,否则z
会被分配给x
,即使它未定义。
请注意,在JavaScript中,仍然必须声明变量:var test;
答案 0 :(得分:5)
我认为您正在寻找??
运营商。
答案 1 :(得分:3)
var abc = blah ?? "default";
是的
答案 2 :(得分:3)
这就是你要找的东西
var x = y ?? z;
答案 3 :(得分:1)
在C#中没有没有定义变量的概念。这种运算符在C#中没有意义。
答案 4 :(得分:1)
与JavaScript不同,C#不是动态语言,而是静态语言,因此无法进行此类操作 - 将发生编译错误。
想象一下,你正在写这个if
:
if(pizzaPrice == hamburgerPrice)
在首先声明变量之前:
decimal pizzaPrice;
decimal hamburgerPrice;
编译时会发生错误。
<强>更新强> 即使变量被声明也没关系,因为C#不支持这样的功能。
另一方面,JavaScript通过调用if
方法强制对ToBoolean
条件中的变量进行评估,如果它是undefined
或null
则等于到false
和C#不包含这样的行为。
请看这篇很酷的文章:JavaScript pitfalls: null, false, undefined, NaN
但是如果你想检查变量是否引用null
,你可以轻松使用null coalescing operator“??”操作
如下:
var x = y ?? z;
答案 5 :(得分:0)
是的,有:??
string x = y ?? z;
基本上计算:
string x = y != null ? y : z
但是,Javascript和C#之间存在一些差异。与JS一样,y
和z
必须事先声明。但是,与JS不同,y
和z
也必须被分配&#34;在C#或编译器错误将像往常一样抛出。
运算符需要可空类型,并在返回第二个之前检查第一个是否为null。如果需要,您可以链接一大堆(a ?? b ?? c ?? d ?? e
)。
请注意,零长度字符串不 null。