簡體   English   中英

以下Null條件運算符有什么問題?

[英]What is wrong with the below Null-Conditional Operator?

出什么問題了

public int Add(int? a, int? b)
{
    return (a?.0 + b?.0);
}

編譯錯誤: 無法隱式轉換類型'int?' 'bool'

只是嘗試以C#6.0的方式獲得添加兩個可空整數的味道。

我也知道其他方式(比如hasvalue等),但我正在試驗這個新的運算符。

好吧,首先x?.0並不意味着什么時候x是一個int? 0不是int?的屬性或方法int?

好像你試圖使用空合並運算符?? 而不是空條件操作?. 如果是這種情況,您的方法應如下所示:

public int Add(int? a, int? b)
{
    return a ?? 0 + b ?? 0;
}

如果不是這樣,你的意思是?. 那么你可以用int的擴展方法測試這個運算符,只返回它的值:

public static int Identity(this int value)
{
    return value;
}

並按原樣嘗試使用它(但使用int? ):

public int? Add(int? a, int? b)
{
    return a?.Identity() + b?.Identity();
}

但是,如果你只想結合這些int? 參數在一起你不需要任何新東西。 這只是工作:

public int? Add(int? a, int? b)
{
    return (a + b);
}

當兩個參數都不為null ,兩個選項都將返回結果,否則返回null

暫無
暫無

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

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