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