什麼是更好的(串)閱讀器[0] VS Convert.ToString(閱讀[0])
var s = (string)reader[0]
或
var s = Convert.ToString(reader[0])
?
什麼是更好的(串)閱讀器[0] VS Convert.ToString(閱讀[0])
var s = (string)reader[0]
或
var s = Convert.ToString(reader[0])
?
我想說reader.GetString(0)
Circra版本我做了很多的研究,發現了獲取
我還在3.5測量這一點,並發現這不是'進行可測量地更好(字符串)讀取器[0]'。 – mquander 2010-02-17 20:54:56
reader.GetString(0)是否存在讀取blob值的問題,例如VARCHAR(最大)? – Brettski 2012-01-26 03:15:08
我猜reader[0].ToString();
如果讀者實際上是[0]一個字符串,那麼(string)reader[0]
。
它更清晰,可能更快(除非編譯器做了一些我不知道的神奇優化)。
什麼約
讀者[0]的ToString();
var s = (string)reader[0]
會給你一個類轉換異常,如果它不能強制轉換爲字符串,而
var s = Convert.ToString(reader[0])
將更加妥善地處理它,你會得到空,如果它不能被轉換。這也將爲reader [0]處理更多類型的對象,因爲另一種方法只允許將類型轉換爲字符串的類型轉換,而這將支持Convert類可以處理的任何類型。我認爲更多。但可能不...
這是更快的,在我的測試快約〜30%:
var s = (string)reader[0];
然而,這不會吹當它爲空時:
var s = Convert.ToString(reader[0]);
reader.GetString(0);
怎麼樣?
// Conveys that you are sure that reader[0] is a string and
// if it's not you probably have bigger problems
// than the resulting exception
var s = (string)reader[0];
// Conveys that you are hoping that reader[0] is convertible to a string
var s = Convert.ToString(reader[0])
所以它可能選擇採取在考慮範圍內的事。
+1考慮代碼的可讀性和意圖,而不是僅僅表現。 – rob 2010-02-15 15:46:46
我會
reader[0].ToString();
去爲什麼沒有考慮可讀性和可維護性?
我知道筆者詢問:
var s = (string)reader[0]
or
var s = Convert.ToString(reader[0])
但怎麼樣:
string s = reader["Fieldname"].ToString();
這就是更具可讀性和更安全的,如果你交換/刪除/添加列和指數變化..這當然更值得。
有一個人說硬演出快了30%。 1毫秒的30%是1333毫秒?當然不是整個數據獲取的30%。
應該注意這個答案。 – jason 2010-10-27 18:58:27
爲什麼不將reader [0] .ToString()作爲選項? – Oded 2010-02-15 14:11:21
你可以定義「更好」嗎?更快?更強大?更容易閱讀?較小的內存佔用? NETFX 2 – 2010-02-15 14:11:50