C#相当于JavaScript“OR赋值”

时间:2013-05-09 19:43:21

标签: c# javascript

C#是否与JavaScript的赋值语法var x = y || z;等效?如果您不知道,结果不是true/false。如果定义了y,则会将其分配给x,否则z会被分配给x,即使它未定义。

请注意,在JavaScript中,仍然必须声明变量:var test;

6 个答案:

答案 0 :(得分:5)

我认为您正在寻找??运营商。

MSDN Reference

答案 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条件中的变量进行评估,如果它是undefinednull等于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一样,yz必须事先声明。但是,与JS不同,yz也必须被分配&#34;在C#或编译器错误将像往常一样抛出。

运算符需要可空类型,并在返回第二个之前检查第一个是否为null。如果需要,您可以链接一大堆(a ?? b ?? c ?? d ?? e)。

请注意,零长度字符串 null。