(串)阅读器[0] VS Convert.ToString(阅读[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