• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
博雅居
要想跟上时代,就得不断学习!
博客园    首页    新随笔    联系   管理    订阅  订阅
C#中as和is关键字

一. as 运算符用于在兼容的引用类型之间执行某些类型的转换。例如:

static void Main(string[] args)

{

    object[] obj = new object[3];

    obj[0] = new class1();

    obj[1] = "hello";

    obj[2] = 10;



    for (int i = 0; i < obj.Length; i++)

    {

        string s = obj[i] as string;

        if (s != null)

        {

            Console.WriteLine(s);

        }

        else

        {

            Console.WriteLine("not a string");

        }

    }



    Console.ReadLine();

}

结果:

not a string

hello

not a string

 

class Base

{

    public override string ToString()

    {

        return "Base";

    }

}

class Derived : Base

{ }



class Program

{

    static void Main()

    {



        Derived d = new Derived();



        Base b = d as Base;

        if (b != null)

        {

            Console.WriteLine(b.ToString());

        }



    }

}

对于继承类,允许把子类转换成父类,但是不可以把父类转换成子类,不同类之间,值类型不可转换。

二.is检查对象是否与给定类型兼容。

例如,下面的代码可以确定对象是否为 MyObject 类型的一个实例,或者对象是否为从 MyObject 派生的一个类型:

 
if (obj is MyObject)
{
}

如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。

如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。

不能重载 is 运算符。

请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。

在 is 运算符的左侧不允许使用匿名方法。lambda 表达式属于例外。

 

class MyQuickSort

{

    static void Main(string[] args)

    {

        class2 c2 = new class2();



        if (c2 is class1)

        {

            Console.WriteLine("Yes");

        }

        else

        {

            Console.WriteLine("No");

        }



        Console.ReadLine();

    }

}



class class1

{

    public override string ToString()

    {

        return "";

    }

}



class class2:class1

{



}

结果:yes

If opportunity doesn’t knock, build a door
posted on 2015-11-13 09:55  博雅居  阅读(224)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3