(字符串)读取器[0]和读取器[0]之间的区别.ToString().

本文关键字:读取 区别 ToString 字符串 之间 | 更新日期: 2023-09-27 17:56:19

DataReader[0].ToString()(string)DataReader[0]之间有区别吗?

我的猜测是,如果数据库类型不是字符串类型,(string)DataReader[0]可能会失败,其中DataReader[0].ToString()只会将数据库 null 之外的任何内容转换为字符串。 是这样吗?

哪个会更快?

(字符串)读取器[0]和读取器[0]之间的区别.ToString().

这些都向您介绍了潜在的数据异常,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)objectobject.ToString()有类似的怀疑,这个问题是正确的评论地方。

当确定对象的类型是字符串时,最好执行typecasting而不是调用方法.ToString()。如果您查看ToString()的代码:

    public virtual string ToString()
    {
      return this.GetType().ToString();
    }

首先通过调用方法查找对象的类型GetType()然后调用该类型的ToString()

如果我们不确定object的类型,那么答案将是 做ToString()而不是(string) .

如果您想查看(字符串)与 .ToString() 然后点击链接 : (string) vs .ToString()