[英]Converting Nullable<bool> to bool
我收到此編譯器錯誤:
不能隱式轉換類型“bool?” '布爾'。 存在顯式轉換(您是否缺少演員表?)。
對於以下代碼:
xEnable = was.xEnable;
xEnable
是 DB 中的可空列。
這意味着
xEnable is of type bool
和
was.xEnable is of type bool? (ie: nullable bool)
做類似的事情
xEnable = was.xEnable.HasValue ? was.xEnable.Value : false;
其中false是默認值,如果was.xEnable == null
編輯或者如果你真的想要你可以使用?? 操作員喜歡
xEnable = was.xEnable ?? true;
要么
xEnable = was.xEnable ?? false;
實際使用??
就像你的標題一樣,去
xEnable = was.xEnable ?? false;
如果您希望xEnable
為false
如果was.xEnable
為null
,或
xEnable = was.xEnable ?? true;
如果您希望xEnable
為true
如果was.xEnable
為null
。
對於 C# 8.0 及更高版本,您可以使用??
操作員,正如你所問的,做
xEnable = was.xEnable ?? false;
如果您希望false
成為was.xEnable
為null
時的默認值。
如果您知道was.xEnable
不為 null,則可以使用
xEnable = was.xEnable.Value
如果要在was.xEnable
為null
時使用默認值,可以執行以下操作
bool defaultValue = false;
xEnable = was.xEnable ?? defaultValue;
您是否嘗試將空值實際傳遞給數據庫? 如果是這樣的話:
xEnable = was.xEnable.HasValue ? was.xEnable.Value : DBNull.Value;
bool a = false;
bool? b = null;
a = (bool)b;
這將在b
為null
情況下引發異常。
所以可能的解決方案是:
b
永遠不會為null
,所以使用這個模式(壞)bool? a = false
也可以a
空bool? a = false
bool? a = false
;b
null
, a = (b == null)?false:b.Value;
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.