2010-02-15 92 views
6

什麼是更好的(串)閱讀器[0] VS Convert.ToString(閱讀[0])

var s = (string)reader[0] 

var s = Convert.ToString(reader[0]) 

+0

爲什麼不將reader [0] .ToString()作爲選項? – Oded 2010-02-15 14:11:21

+2

你可以定義「更好」嗎?更快?更強大?更容易閱讀?較小的內存佔用? NETFX 2 – 2010-02-15 14:11:50

回答

7

我想說reader.GetString(0)

+2

Circra版本我做了很多的研究,發現了獲取方法與索引看起來是所有讀者的方法中表現最好的。 – keithwarren7 2010-02-15 14:19:51

+0

我還在3.5測量這一點,並發現這不是'進行可測量地更好(字符串)讀取器[0]'。 – mquander 2010-02-17 20:54:56

+0

reader.GetString(0)是否存在讀取blob值的問題,例如VARCHAR(最大)? – Brettski 2012-01-26 03:15:08

1

我猜reader[0].ToString();

2

如果讀者實際上是[0]一個字符串,那麼(string)reader[0]

它更清晰,可能更快(除非編譯器做了一些我不知道的神奇優化)。

1

什麼約

讀者[0]的ToString();

2
var s = (string)reader[0] 

會給你一個類轉換異常,如果它不能強制轉換爲字符串,而

var s = Convert.ToString(reader[0]) 

將更加妥善地處理它,你會得到空,如果它不能被轉換。這也將爲reader [0]處理更多類型的對象,因爲另一種方法只允許將類型轉換爲字符串的類型轉換,而這將支持Convert類可以處理的任何類型。我認爲更多。但可能不...

2

這是更快的,在我的測試快約〜30%

var s = (string)reader[0]; 

然而,這不會吹當它爲空時:

var s = Convert.ToString(reader[0]); 
4
// 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

+1考慮代碼的可讀性和意圖,而不是僅僅表現。 – rob 2010-02-15 15:46:46

0

我會

reader[0].ToString(); 
2

去爲什麼沒有考慮可讀性和可維護性?

我知道筆者詢問:

var s = (string)reader[0]  
or  
var s = Convert.ToString(reader[0]) 

但怎麼樣:

string s = reader["Fieldname"].ToString(); 

這就是更具可讀性和更安全的,如果你交換/刪除/添加列和指數變化..這當然更值得。

有一個人說硬演出快了30%。 1毫秒的30%是1333毫秒?當然不是整個數據獲取的30%。

+0

應該注意這個答案。 – jason 2010-10-27 18:58:27