【问题标题】:Diference between myData as string, (string) myData and Convert.ToString(myData)myData as string, (string) myData 和 Convert.ToString(myData) 之间的区别
【发布时间】:2010-12-27 09:14:49
【问题描述】:

我有点想知道使用 as 关键字、Casting 或使用 Convert.To_______() 函数有什么区别.

经过一番搜索,我发现 as 运算符只执行引用转换和装箱转换。还有哪些不同之处。

我也注意到 as 关键字很少使用为什么会这样。它们中的任何一个是否比其他的具有性能优势,或者它们只是框架中的冗余。

【问题讨论】:

  • 我碰巧看到asConvert 多。
  • 考虑到你的声誉,我相信你看到的比我看到的多,我完全尊重你的意见

标签: c# .net casting type-conversion


【解决方案1】:

(cast) 语法非常重载,可以执行:

  • 装箱/拆箱
  • 保留引用的类型转换
  • 在类型上定义的转换运算符
  • 内置原始转换
  • Nullable-of-T 包装/展开

“as”执行其中的一个子集

  • 保留引用的类型转换
  • 一些有限的 nullable-of-T 装箱

但这里的重要特征是它兼作类型关系的无异常测试 - 比有异常或反射测试更有效。特别是,例如:

// is it a list?
IList list = obj as IList
if(list != null) {
    // specific code for lists
}

如果您坚信某个对象某物,则首选(演员表),因为这表明您的信念。一个例外(在这种情况下)是可取的。

Convert 方法处理不同范围的场景,包括字符串转换(也可以通过静态 .Parse 方法等方式获得)

如果有的话,我最少使用的是 Convert。 (cast) 和 "as" 语法非常常用。

【讨论】:

    【解决方案2】:

    casting vs as:casting 会抛出异常,如果无法进行转换,as 会返回 null。没有任何性能差异。

    转换:完全不同。您不能将数字转换为字符串,但可以转换为。阅读有关 Convert 类功能的文档。

    【讨论】:

      【解决方案3】:

      如果您 %100 确定要转换的对象将被转换,请使用转换,

      如果不作为。

      【讨论】:

        猜你喜欢
        • 2022-10-01
        • 1970-01-01
        • 2011-01-07
        • 2022-01-05
        • 2012-07-01
        • 2019-11-29
        • 1970-01-01
        • 2020-09-22
        • 2020-08-23
        相关资源
        最近更新 更多