【问题标题】:What is the difference between these data type conversions? [duplicate]这些数据类型转换之间有什么区别? [复制]
【发布时间】:2015-03-11 10:27:36
【问题描述】:

转化 #1:

int result = (int)command.ExecuteScalar();

转化 #2:

int result = Convert.ToInt32(command.ExecuteScalar());

想知道它们的具体用途,谢谢!

【问题讨论】:

标签: c# type-conversion


【解决方案1】:

这是两个非常相似的操作 - 但结果不同(在某些情况下)。 (int) 是一个铸件Operator。运算符用于各种事物,例如加法、减法和按位运算。转换运算符用于隐式(隐式)或显式(显式)将一种类型转换为另一种类型。这是运算符在 C# 代码中从 object 到 int 的示例:

public static explicit operator Int32(object obj) 
{
     return ((IConvertible)obj).ToInt32();
}

使用Convert 类做同样的事情,但更明确,有时类型会在其类中具有更具体的类型,操作员将使用该类型而不是Convert 类。但更多时候,他们实际上是在调用同一个东西。有关 ToInt32() 方法的示例,请参见 Decimal

Convert 类方法(来自 .NET source):

public static int ToInt32(object value) {
        return value == null? 0: ((IConvertible)value).ToInt32(null);
    }

所以一般来说,你可以选择任何一种方式。而且由于您只是在处理拆箱操作(从object 到结构),因此如果您知道类型,就不必担心太多。 -

但是,请注意,如果您传递一个空对象,当您使用Convert.ToInt32(object obj) 时它不会抛出,因为它会返回 0。这可能非常有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2016-06-03
    • 1970-01-01
    • 2015-12-14
    • 2011-06-29
    相关资源
    最近更新 更多