爲什麼編譯器無法自動轉換此表達式中的值?C#三態表達式類型轉換
var input = "Hello";
object x = string.IsNullOrEmpty(input) ? input : DBNull.Value;
//could try this too and get similar compile time error
object x2 = string.IsNullOrEmpty(input) ? 1 : input;
我知道DBNull.Value不能轉換爲字符串;然而,我很好奇它爲什麼不能合併成一個對象,因爲結果只是存儲一個引用。如果您將(object)
放在DBNull.Value的前面,它會編譯並運行得很好。
答案的全部,除了gdoron的是缺少了這一點。這不是一個「嘿幫我做這個編譯」的問題。它更要問的是,爲什麼C#編譯器不能或者不能查看被分配的變量的類型與第二個和第三個參數中變量的類型。 –
找到一個稍微不相關的問題這個答案http://stackoverflow.com/a/2215959/186359我認爲它基本上證明,您不能添加信息(賦值變量的類型)時評估表達式。我認爲這可能是真正的答案 –