簡體   English   中英

C#為可空布爾值賦值

[英]c# assign value for nullable boolean

我正在嘗試將?:運算符分配給可為空的布爾變量。

這是原始代碼,可以正常工作

bool? result;
var condition = 3;

if (condition == 1)
    result = true;
else if (condition == 2)
     result = false;
else result = null;

更改代碼后,它遇到錯誤,我在搜索互聯網后將其修復

// before (error occur)
result = condition == 1 ? true : (condition == 2 ? false : null);

// after (fixed error)
result = condition == 1 ? true : (condition == 2 ? false : (bool?)null); 
// *or
result = condition == 1 ? true : (condition == 2 ? (bool?)false : null);

我知道兩個表達式必須具有相同的類型,但是為什么只需要轉換一個表達式卻不轉換所有表達式呢? 這讓我感到困惑。

從我的理解bool and bool? 還是bool? and null bool? and null應該仍然被認為是不相同的類型,但是在這種情況下可以使用。

任何建議,將不勝感激。 謝謝。

在三元條件運算符中,編譯器要求每個可能的賦值都是同一類型。

在段中(condition == 2 ? false : null) ,兩個可能的值為falsenull 編譯器將false視為bool ,因此會出錯,因為null不是bool值的有效替代值。

通過使用(bool?)作為前綴,您可以清楚地知道實際上是在分配一個可為空的布爾值,這使編譯器感到滿意,因為它知道兩個值確實是同一類型。

暫無
暫無

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

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