.NET Fraework 最重要的引用类型之一是System命名空间中Object类。所有的类都是System.Object的派生类。System.Object类型的变量System.Object的别名。可以写成Object。优先考虑Object
Object类型的变量能够引用任何引用类型的任何对象。除此之外Object类型的变量也能引用值类型的实例。
在强制类型转换的过程中,如果内存中的对象类型与指定的类型不匹配,运行时会抛出InavalidCastException异常,在编写程序的时候,赢考虑捕捉这种异常,并在发生时进行相应的处理。但是,在对象类型不符合预期的情况下捕捉异常并试图恢复应用程序的顺利执行,这是一个相当繁琐的过程,c#提供了两个相当有用的操作符,能以更加得体的方式执行转型,is和as操作符
is操作符:通过检测可以看出下面转型是安全的。
is操作符取两个操作数:左边对象引用,右边是类型名称。如果左边的对象是右边的类型,则is返回结果true,反之为false。
as操作符:
as操作符充当is操作符类似的角色,只是功能稍微进行了删减。可以像下面这样使用as操作符。使用as操作符如果转换成功返回成功后的结果,否则返回null
unsafe关键字:
不安全,可以标记代码块或者这个方法,编译包含unsafe代码的程序时,必须在生成项目时指定“允许不安全的代码”选项做法是咋解决方案资源管理器中右击项目名称------》属性------》生成------》选择“允许不安全的代码”--------》选择文件全部保存。
unsafe代码关系到内存的管理方式;unsafe代码中创建的对象被称为“非托管”对象,虽然不常见,但偶尔也需要以这种方式访问内训,尤其是在一些低级Windows操作时。