2014-01-28 104 views
1

我試圖單行如果語句如下,我得到的錯誤justifably.How我應該這樣做嗎?單行如果爲null或int返回

int? n; 
n = (reader[0] == null)? null : Convert.ToInt32(reader[0]); 
+0

謹防空和DBNull的 –

回答

6

顯式轉換爲int?,如:

n = (reader[0] == null)? null :(int?) Convert.ToInt32(reader[0]); 

或者:

n = (reader[0] == null) ? (int?) null : Convert.ToInt32(reader[0]); 
+0

之間的差異BTW你也可以施放'null' –

+1

@SergeyBerezovskiy,燁。那是真實的。 – Habib

0

你真的需要一個if語句?

n = (int?) reader[0]; 
0

Habib的回答是正確的。不過,我有時會發現以下約定更易於閱讀:

int? n = null; 
if (reader[0] != null) 
    n = Convert.ToInt32(reader[0]); 
0

我儘量試圖做太多的事情在一行代碼。

它的維護性較差,可讀性較差,無論如何編譯到相同的MSIL。

這樣的事情是更加易讀:

int? number = null; 

if (reader[0] != null) 
{ 
    number = Convert.ToInt32(reader[0]); 
}