as和is类型转换

来源:互联网 发布:淘宝上怎么买正规发票 编辑:程序博客网 时间:2024/05/17 06:41

一、类型转换

1.任何类型都可以转换为其基类类型,用隐式转换完成;

2.任何类型转换为其派生类型时,必须进行显示转换。如(类型名)对象名;

3.使用GetType可以取得任何对象的精确类型;

例:int i = 0;
       char c='a';
       Console.WriteLine(c.GetType());

4.基本类型可以使用Convert类实现类型转换;

5.除了string以外的其他类型都有Parse方法,用于将字符串类型转换成对应的基本类型;

6.值类型和引用类型的转换成为装箱(boxing)或拆箱(unboxing)


二、is/as 示例

is转换规则

1.检查对象类型的兼容性,并返回结果true(false);

2.不会抛出异常;

3.如果对象为null,返回false;

示例

object o = "abc";
            if (o is string)  //执行第一次类型兼容性检查
            {
                string s = (string)o;  //执行第二次类型兼容性检查,并转换
                Console.WriteLine("转换成功"+s);
            }
            else {
                Console.WriteLine("转换失败");
            }


as转换规则

1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;

2.不会抛出异常;

3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;

示例

object o = "abc";
            string s = o as string;//执行第一次类型兼容性检查,并返回结果
            if (s!=null)
            {
                
                Console.WriteLine("转换成功"+s);
            }
            else {
                Console.WriteLine("转换失败");
            }


注:as比is少执行一次兼容性检查,性能可能会高一点点。

as是引用类型 类型的转换或者装箱转换,不能与值类型转换。

0 0
原创粉丝点击