代码之家  ›  专栏  ›  技术社区  ›  Ash Burlaczenko

转换和解析有什么区别?

  •  5
  • Ash Burlaczenko  · 技术社区  · 15 年前

    Convert.ToInt32(myObject);
    

    但我也会写

    Int.Parse(myObject.ToString());
    
    • 有什么区别吗?

    提前谢谢。

    4 回复  |  直到 14 年前
        1
  •  4
  •   Cody Gray Felix    14 年前
    • 有什么区别吗?

    对, Int32.parse(myObject.ToString()); 绕道到字符串,这通常会起作用,但这是不必要的,它可能会失败或给出不同的结果。

    一般来说, Convert.ToInt32(myObject);

    但这取决于要转换的数据类型。

    如果 myObject = '1'; 1 49 ?

    如果 myObject = false; 0 还是例外?

        2
  •  1
  •   jethro    15 年前

    这是怎么回事 Convert.ToInt32 方法源看起来像

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

    只要对象实现 IConvertible 应该调用此方法的接口。

        3
  •  1
  •   Jeff Mercado    15 年前

    documentation IConvertible 接口。有许多原因使这些方法与众不同。值得注意的是,如果字符串表示不表示相应的整数值(例如,“{value=123}”),或者对象不是 IConvertible . 我会选择使用 Convert.ToInt32() 因为转换是由类型定义的,并且不依赖于将来可能更改的某些观察到的属性。

        4
  •  0
  •   Beatles1692    15 年前

    转换意味着将一个对象从其原始类型强制转换为另一个类型(如果可能的话)。但是这两个对象在各自的上下文中都是相等的,例如“32”是32的字符串版本(作为整数)。在某些语言(如Visual Basic)中,这种转换可以隐式进行。

    解析意味着接受输入(通常以字符串的形式)并将其转换为完全不同的对象。把日期当作example:We can 解析“2010年7月20日”,这是一个日期字符串。这意味着我们必须将提供的字符串转换为日期对象,该对象的日期为20,月份为7,年份为2010。很明显,这个任务并不简单,应该有一个逻辑来解析字符串。

    推荐文章