2017-03-09 90 views
1

我有以下域在我的課:布爾?不能爲空

public bool? EitherObject1OrObject2Exists => ((Object1 != null || Object2 != null) && !(Object1 != null && Object2 != null)) ? true : null; 

但在Visual Studio中,我得到一個智能感知錯誤不可能有「布爾」和「空」即使該字段爲空之間的轉換。 我做錯了什麼? 是否有一個更清潔的方法來檢查兩個對象中的任何一個是否爲空,但其中一個必須爲空?

+0

我想你可能從閱讀[你的代碼難以理解嗎?](http://www.daedtech.com/code-hard-understand/)中受益博客文章由Erik Dietrich提供。 – mason

+1

你的表情是多餘的。不是說這會解決問題,而是多餘的。 –

+0

@Os。爲什麼它是多餘的?請解釋一下 – Palmi

回答

5

嘗試

? (bool?) true : null; 

的問題是,默認bool(真)不能爲空,因此case語句正在返回不同類型至於編譯器而言

而且你可以刪除冗餘度由Servy指出

Object1 != null^Object2 != null 
+1

我知道它在OP的問題範圍之外,但是可能包含修復冗餘空檢查的表達式? – maccettura

+1

@maccettura完成:) – Steve

+0

我用布爾?所以我可以使用[Required]數據註釋 – Palmi