您的位置:首页 > 编程语言 > C#

c#之is和as的区别用法

2015-09-18 10:20 369 查看
一、类型转换

**************************************************************************************************************

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

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

3.使用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; //执行第二次类型兼容性检查,并转换

        MessageBox.Show("转换成功!");

    }

    else

    {

        MessageBox.Show("转换失败!");

    }

as转换规则:

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

2.不会抛出异常;

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

示例:

    object o = "abc";

    string s = o as string; //执行第一次类型兼容性检查,并返回结果

    if (s != null)

        MessageBox.Show("转换成功!");

    else

        MessageBox.Show("转换失败!");

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

本文实例讲述了C#中is和as的用法,对加深is与as用法的理解有一定的帮助借鉴作用。具体如下:

现来看个例子:

?
这样会报错(InvalidCastException),由于C#安全机制,它会去判断一次。我们这里做了非法的转换。

Is做判断:is说判断对象是不是你要的那个类型(这里说User)

修改后的示例如下:

?
这样的话,我们在obj is User这里做了一次判断,我们刚才说了,(User)obj这样的操作(强制转换)编译器还会做一次操作,这样就有性能上面的消耗。来看看AS。

AS操作:如果说改对象就转换,不是则返回null.

?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: