C#细节之as和is

判断对象或变量属于某种类型:
一、适用类型
1)is可以判断引用类型和值类型。
2)as可以判断引用类型和可空类型。(注:当值类型变为可空类型时可以用as判断,可以推断可空实际是将值类型进行装箱操作转化为了引用类型)。
二、返回值
1)is返回值为bool型。
2)as返回值为要判断类型。
例1:
class Program
    {
        static void Main(string[] args)
        {
            int? i = 0;
            string j = String.Empty;
            int k = 0;
            if (j is int)
            {
                Console.WriteLine("int");
            }
            else
            {
                Console.WriteLine("not int");
            }

            Other other = new Other();
            if (other is Other)
            {
                Console.WriteLine("Yes");
            }
            else
            {
                Console.WriteLine("No");
            }
            //int x = k as int;//Error:as不可以用于值类型
            int? y = i as int?;//as可以用在可空类型
            Console.ReadKey();
        }
    }

    class Other
    {
    }
例2:
FindControl判断类型时有两种写法:
1)
TextBox txtTmp = XXX.FindControl("txtTmp") as TextBox;
if(txtTmp!=null)
{
      txtTmp.Text  = "Hello";//操作txtTmp对象
}
2)
TextBox txtTmp = XXX.FindControl("txtTmp") as TextBox;
if(txtTmp is TextBox)
{
     txtTmp = (TextBox)XXX.FindControl("txtTmp");
     txtTmp.Text  = "Hello";//操作txtTmp对象
}
个人推荐第一种写法^=^
敬告

作者:pangxiaoliang
出处:http://www.cnblogs.com/pangxiaoliang
本文版权归pangxiaoliang和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,谢谢合作。
原文地址:https://www.cnblogs.com/pangxiaoliang/p/1530652.html