是更好地使用下面的語句是更好地使用Convert.ToInt32 「0」 級聯()函數調用
Convert.ToInt32( 「0」 + stringValue的)
如果沒有,那麼爲什麼呢?
我知道用戶int.TryParse()函數更好,但是上面的語句怎麼樣。
是更好地使用下面的語句是更好地使用Convert.ToInt32 「0」 級聯()函數調用
Convert.ToInt32( 「0」 + stringValue的)
如果沒有,那麼爲什麼呢?
我知道用戶int.TryParse()函數更好,但是上面的語句怎麼樣。
比什麼好?
就我個人而言,我認爲使用Convert.ToInt32("0" + stringValue)
是一種反模式。
它沒有提供任何有用的,因爲:
只需直接使用Convert.ToInt32(stringValue)
或int.TryParse
如果您不想執行異常處理。
+1這正是我打字時的一半,但你有一些額外的點。我真的沒有看到任何理由,但可以看到反對它的多種原因。 – Jay 2010-03-31 05:04:32
我的意思是我看到一些代碼,開發人員使用此語句將字符串轉換爲int值,因爲您知道int.TryParse更好,因爲它不會拋出execption,在Convert.ToInt32(「0」+ stringValue)它不會拋出execption,但正如你可以看到一個字符串連接的附加操作在那裏。這就是爲什麼我要求更好地使用它? – 2010-03-31 05:05:19
@Asim:不是。它仍然可以拋出異常... – 2010-03-31 05:09:32
只有當字符串變量是空引用時,唯一可以使用的情況是。儘管如此,連接零個字符完全沒有意義。當我們用字符串連接進行空校驗後只是,一個更好的版本將與空字符串拼接而是爲不爲負值突破:
Convert.ToInt32(String.Empty + stringValue)
更好的解決方案,因爲它不做一個字符串連接:
Convert.ToInt32(stringValue ?? String.Empty)
一個更好的解決辦法是檢查空值第一,這樣你就不必解析已知的字符串:
stringValue == null ? 0 : Convert.ToInt32(stringValue)
爲什麼你會想要* * t o使用該構造? – 2010-03-31 05:05:56
我不想使用它,因爲它具有字符串連接,但是我看到了那段代碼,我想知道從別人那裏使用該語句的原因,因爲我正在處理別人的代碼。 – 2010-03-31 05:07:37
這是錯誤的代碼。寫它的人試圖「太聰明」......我會刪除它,並直接使用TryParse或Convert。 – 2010-03-31 05:12:15