[英]C# equivalent to JavaScript “OR assignment”
C#是否等效于JavaScript的赋值语法var x = y || z;
var x = y || z;
? 如果您不知道,结果将不是true/false
。 如果定义了y
,则将其分配给x
,否则将z
分配给x
即使未定义也是如此。
请注意,在JavaScript中,仍必须声明变量: var test;
我认为您正在寻找??
操作员。
var abc = blah ?? "default";
是的
这就是你要找的
var x = y ?? z;
在C#中,没有这样的概念,即未定义变量。 这样的运算符在C#中没有意义。
与JavaScript不同,C#不是动态语言而是静态语言,因此无法进行此类操作-会发生编译错误。
想象一下, if
您正在编写此代码, if
:
if(pizzaPrice == hamburgerPrice)
在首先声明变量之前:
decimal pizzaPrice;
decimal hamburgerPrice;
编译时将发生错误。
更新:即使声明了变量,也没关系,因为C#不支持这种功能。
另一方面,JavaScript通过调用ToBoolean
方法在条件if
情况下强制执行变量的评估,如果undefined
或为null
则它等于 false
并且C#不包含这种行为。
看看这篇很酷的文章: JavaScript陷阱:null,false,undefined,NaN
但是,如果要检查变量是否引用了null
,则可以轻松使用null合并运算符 “ ??”。 操作员。
如下:
var x = y ?? z;
是的,有: ??
string x = y ?? z;
基本上是这样计算的:
string x = y != null ? y : z
但是,Javascript和C#之间有一些区别。 与JS一样, y
和z
必须事先声明。 但是,与JS不同, y
和z
也必须在C#中“分配”,否则将照常引发编译器错误。
运算符需要可为null的类型,并在返回第二个值之前检查第一个是否为null。 如果需要,可以将一整串( a ?? b ?? c ?? d ?? e
)链在一起。
请注意,零长度的字符串不为 null。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.