(字符串)读取器[0]和读取器[0]之间的区别.ToString().
本文关键字:读取 区别 ToString 字符串 之间 | 更新日期: 2023-09-27 17:56:19
DataReader[0].ToString()
和(string)DataReader[0]
之间有区别吗?
我的猜测是,如果数据库类型不是字符串类型,(string)DataReader[0]
可能会失败,其中DataReader[0].ToString()
只会将数据库 null 之外的任何内容转换为字符串。 是这样吗?
哪个会更快?
这些都向您介绍了潜在的数据异常,IMO 从读者那里读取的最佳方法是:
var x = reader[0] as string
然后对于数字/布尔值等,我总是使用可为空的类型,因此您可以获得
var y = reader[1] as int?
现在,如果您出于某种原因绝对反对可为空的值(我认为它们非常适合了解是否设置某些内容)
int i = (reader[1] as int?).GetValueOrDefault()
(string)DataReader[0] 是类型转换。编译器将在编译时插入一些
需要执行的指令集,以便在执行转换时引发异常。DataReader[0].tostring() 是函数调用,它在运行时解析,没有异常。
如果我错了,专家请纠正我。
现在评论这个问题为时已晚,但我认为很多人对(string)object
和object.ToString()
有类似的怀疑,这个问题是正确的评论地方。
当确定对象的类型是字符串时,最好执行typecasting
而不是调用方法.ToString()
。如果您查看ToString()
的代码:
public virtual string ToString()
{
return this.GetType().ToString();
}
首先通过调用方法查找对象的类型GetType()
然后调用该类型的ToString()
。
如果我们不确定object
的类型,那么答案将是 做ToString()
而不是(string)
.
如果您想查看(字符串)与 .ToString() 然后点击链接 : (string) vs .ToString()