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

时间:2011-05-12 13:08:18

标签: c# tostring datareader

DataReader[0].ToString()(string)DataReader[0]之间是否存在差异?

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

哪个更快?

3 个答案:

答案 0 :(得分:2)

这两个都向您介绍潜在的数据异常,IMO从阅读器读取的最佳方式是:

var x = reader[0] as string

然后对于数字/布尔等我总是使用可空类型,所以你可以得到

var y = reader[1] as int?

现在如果你出于某种原因完全反对nullables(我认为他们很高兴知道是否设置了某些东西)

int i = (reader[1] as int?).GetValueOrDefault()

答案 1 :(得分:0)

(string)DataReader [0]是类型转换。编译器将在编译时插入一些指令集,这些指令需要执行才能执行转换,并在未能执行转换时抛出异常。

DataReader [0] .tostring()是函数调用,它在运行时被解析,没有异常。

如果我错了,专家请纠正我。

答案 2 :(得分:0)

我知道对这个问题发表评论为时已晚,但我认为很多人对(string)objectobject.ToString()有类似疑问,这个问题是正确评论的地方。

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

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

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

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

如果您想查看(字符串)vs .ToString()的性能基准,请点击以下链接:(string) vs .ToString()