簡體   English   中英

C#相當於JavaScript“ OR分配”

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

我認為您正在尋找?? 操作員。

MSDN參考

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一樣, yz必須事先聲明。 但是,與JS不同, yz也必須在C#中“分配”,否則將照常引發編譯器錯誤。

運算符需要可為null的類型,並在返回第二個值之前檢查第一個是否為null。 如果需要,可以將一整串( a ?? b ?? c ?? d ?? e )鏈在一起。

請注意,零長度的字符串不為 null。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM