什么更好
var s = (string)reader[0]
或
var s = Convert.ToString(reader[0])
答案 0 :(得分:7)
我会说reader.GetString(0)
答案 1 :(得分: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])
所以这可能是选择考虑上下文的问题。
答案 2 :(得分:4)
为什么没有人考虑过可读性和可维护性?
我知道作者问:
var s = (string)reader[0]
or
var s = Convert.ToString(reader[0])
但是怎么样:
string s = reader["Fieldname"].ToString();
如果您交换/删除/添加列并且索引正在改变,那么更具可读性和安全性......这肯定更值得。
一个人说硬拼命要快30%。 1 ms的30%是1,333 ms?肯定不是整个数据获取的30%。
答案 3 :(得分:2)
如果reader [0]实际上是一个字符串,那么(string)reader[0]
。
它更清晰,最有可能更快(除非编译器做了一些我不知道的神奇优化)。
答案 4 :(得分:2)
var s = (string)reader[0]
如果无法将其转换为字符串,将为您提供类强制转换异常,而
var s = Convert.ToString(reader[0])
将更优雅地处理它,如果无法转换,您将获得null。这也将为reader [0]处理更多类型的对象,因为另一种方法只允许将类型转换为字符串的转换,而这将支持转换类可以处理的任何类型。我认为更多。但可能不是......
答案 5 :(得分:2)
在我的测试中,这个更快,大约快〜30%:
var s = (string)reader[0];
然而,当它为空时,它不会爆炸:
var s = Convert.ToString(reader[0]);
答案 6 :(得分:2)
reader.GetString(0);
怎么样?
答案 7 :(得分:1)
我猜是reader[0].ToString();
答案 8 :(得分:1)
怎么样
读取器[0]的ToString();
答案 9 :(得分:0)
我会选择
reader[0].ToString();