[英]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)
,兩個可能的值為false
和null
。 編譯器將false
視為bool
,因此會出錯,因為null
不是bool
值的有效替代值。
通過使用(bool?)
作為前綴,您可以清楚地知道實際上是在分配一個可為空的布爾值,這使編譯器感到滿意,因為它知道兩個值確實是同一類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.