[英]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.