码迷,mamicode.com
首页 > 其他好文 > 详细

CLR

时间:2015-09-06 12:51:19      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

CLR公共语言运行库,是一个运行环境,负责资源管理,即内存分配和垃圾收集,保证应用和底层操作系统之间必要的分离。

所有类型最终都是从System.Object派生的,所以可以保证每个类型的每个对象都有一组最基本的方法。

System.Object提供了如下所示的公共实例方法。  

Equals(Object) 确定指定的对象是否等于当前对象。如果两个对象具有相同值就返回ture.
GetHashCode 返回对象的值得一个哈希码。如果某个类型的对象要在哈希表集合中作为key使用,该类型应该重写这个方法。方法应该为不同的对象提供一个良好的分布。
ToString 该方法默认返回类型的完整名称(this.GetType().FullName)。
GetType 返回从Type派生的一个对象的实例,指出调用GetType的那个对象是什么类型。返回的Type类型可以与反射类配合使用,从而获取与对象的类型相关的元数据信息。

  

 

 

 

CLR最重要特性之一就是类型的安全性。在运行时,CLR始终知道一个对象的类型,可以调用GetType方法,得到对象的类型。

  CLR允许将一个对象转换为它的实际类型或者它的任何基类型。

  C#不要求使用特殊语法即可将一个对象转换为它的任何及类型,因为向基类型的转换被认为是一种安全的隐式转换。但是,将对象转换为它的某个派生类时,C#要求开发人员只能进行显示转换,因为这样的转换在运行时可能失败。

1
2
3
4
5
6
7
public static void Main() {
   // 不需要转型
   Object o = new Employee();
 
   // 需要进行强制类型转换
   Employee e = (Employee) o;
}

  在C#语言中进行类型转换的另一种方式是使用 as 操作符,优于 is 操作符,提高性能。

     as操作符通常这样使用:

1
2
3
4
Employee e = o as Employee;
if ( e != null ){
    //在if中使用e
}
  as操作符的工作方式与强制类型转换一样,只是它是不会抛出异常的,如果不能转化,结果就是null。所以,正确的做法就是检查最终生成的引用是否为null。如果企图直接使用转换后的引用,就会抛出异常。
 

CLR

标签:

原文地址:http://www.cnblogs.com/yuqlblog/p/4785012.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!