解決的方法有幾個:
-
先對DataReader["ColumnName"]做null checking,再根據結果做ToString()或回傳空字串(或其它有意義的字串)。
-
永遠將欄位設為有預設值(如空字串或其它數值資料)而不要允許null欄位
- 使用Convert.ToString()來做轉換
public static string ToString(object value, IFormatProvider provider) { IConvertible convertible = value as IConvertible; if (convertible != null) { return convertible.ToString(provider); } IFormattable formattable = value as IFormattable; if (formattable != null) { return formattable.ToString(null, provider); } if (value != null) { return value.ToString(); } return string.Empty; }
以執行速度來說,根據Brad Abrams的測試,ToString()會比Convert.ToString()快些,由上面的程式碼可以知道為什麼。因為少了null checking。
結論
當不確定所轉換的物件是否為null時,可以用Convert.ToString()來做轉換,以避免系統拋出例外訊息;當確定物件不為null時,直接使用ToString()即可。
No comments:
Post a Comment