马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C#中is和as讲解【转载】

[复制链接]
查看3764 | 回复0 | 2015-2-2 09:44:32 | 显示全部楼层 |阅读模式
先看例子:

[C#] 纯文本查看 复制代码
public class User
    {

    }
    public class Group
    {

    }

class Program
    {
        static void Main(string[] args)
        {

            Object oUser = new User();

            Object user = (Group)oUser;


        }
    }


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

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

[C#] 纯文本查看 复制代码
class Program
    {
        static void Main(string[] args)
        {

            Object obj = new User();

            if (obj is User)
            {
                User user = (User)obj;
            }

        }
    }


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

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

[C#] 纯文本查看 复制代码
class Program
    {
        static void Main(string[] args)
        {

            Object obj = new User();

            User user = obj as User;
            if(user==null)
            {
                // handle error
                //....
            }
        }
    }








C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则