zoukankan      html  css  js  c++  java
  • c# is as 和强制类型转换

    参考:http://blog.sina.com.cn/s/blog_63f15e560100hzp6.html

    http://blog.csdn.net/xqiangqiang/article/details/5287447

    首先:

    总结一下(xxx)和xxx.Parse(),Convert.xxx(),xxx.TryParse(string, out xx)的区别:

    (int)转换:用在数值范围大的类型转换成数值范围小的类型时使用,但是如果被转换的数值大于或者小于数值范围,则得到一个错误的结果,利用这种转换方式不能将string转换成int,会报错。

    Int32.Parse(),转换:在符合数字格式的string到int类型转换过程中使用,并可以对错误的string数字格式的抛出相应的异常。

    Convert.ToInt32()转换:使用这种转换,所提供的字符串必须是数值的有效表达方式,该数还必须不是溢出的数。否则抛出异常。

     xxx.TryParse(string, out xx)转换:类似于 Parse 方法,不同之处在于 TryParse 方法在转换失败时不引发异常,赋默认值。

    as is 和强制类型转换

    由于对象是多态的,因此基类类型的变量可以保存派生类型。若要访问派生类型的方法,需要将值强制转换回该派生类型。不过,在这些情况下,如果只尝试进行简单的强制转换,会导致引发 InvalidCastException 的风险。这就是 C# 提供 isas 运算符的原因。您可以使用这两个运算符来测试强制转换是否会成功,而没有引发异常的风险。通常,as 运算符更高效一些,因为如果可以成功进行强制转换,它会实际返回强制转换值。而 is 运算符只返回一个布尔值。因此,如果只想确定对象的类型,而无需对它进行实际强制转换,则可以使用 is 运算符。

    Effective c#中强调as is优于强制类型转换,

    在 C# 中已经提供了一个很好的类型转换方式,那么在进行类型转换的时候,可以按照如下的方式进行选择。

    类型转换

    使用选择

    Object => 已知引用类型

    使用 as 操作符来完成

    Object => 已知值类型

    先使用 is 操作符来进行判断,再用类型强转方式进行转换

    已知引用类型之间转换

    首先需要相应类型提供转换函数,再用类型强转方式进行转换

    已知值类型之间转换

    最好使用系统提供的 Convert 类所涉及的静态方法

  • 相关阅读:
    IDEA 工具使用报错总结
    Struts2 值栈总结(ValueStack)
    hibernate 中映射关系配置
    Java 注解之总结
    ssh_整合总结
    Ajax 请求之_请求类型详解
    C++的重载赋值运算符
    vector容器使用reserve预留空间
    C++中的内存分配
    C++ const修饰指针
  • 原文地址:https://www.cnblogs.com/nygfcn1234/p/3411975.html
Copyright © 2011-2022 走看看