簡體   English   中英

帶有“?”和“ ??”的代碼是什么意思?

[英]What does this code with “?” and “??” mean?

這個語法是什么意思? 當我看這段代碼時,我目前正在編寫c#4.0。

_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
             ? TempData[_dataKey] ?? new ProfileData ()) as ProfileData;

如果我要在IF語句中編寫它,那會是什么?

編譯器給我一個錯誤的提示,原因是它不寫:以及需要更多東西嗎?

?? 表示如果為空,則使用其他值。 例如

var name = somevalue ?? "Default Name";

如果somevalue為null,它將分配值“默認名稱”

還單? 是三元運算符,基本上可以這樣使用它:

var example = (conditional statement here) ? value_if_true : value_if_false;

但是,當我正確看待您的代碼時,似乎沒有遵循適用於三元運算符的正確語法,就像Corey所說的那樣,您可能錯過了?嗎? 關??。

看起來您錯過了? 那里。 我懷疑它應該讀為:

_data = (SerializationHelper.Deserialize(Request.Form[_dataKey])
            ?? TempData[_dataKey]
            ?? new ProfileData()
        ) as ProfileData;

在C#中,操作A ?? B A ?? B直接等於(A == null ? B : A) ,或者if (A == null) return B; return A; if (A == null) return B; return A; 如果你更喜歡。

因此,您的上述聲明等同於:

object tmp = SerializationHelper.Deserialize(Request.Form[_dataKey]);
if (tmp == null)
{
    tmp = TempData[_dataKey];
    if (tmp == null)
        _tmp = new ProfileData();
}
_data = tmp as ProfileData;

暫無
暫無

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

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