2010-02-15 76 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