【CLR via C# 读书笔记】 类型基础一

1.所有类型都从 System.Object 派生!

      公共方法:

           Equals   对比两个对象具有相同的值 返回Boolean类型

           GetHashCode 返回对象哈希码

           ToString 返回类型的完整名称,经常被用来重写表示对象状态的String对象

           GetType 指出对象类型

     new 操作符使用时所做的事情

           第一步:计算类型及其所有基类型。

           第二步:从托管中分配类型要求的字节数,分配对象内存,分配的所有字节都设为零。

           第三步:初始化对象的“类型对象指针”和“同步块索引”成员

           第四步:调用类型的实例构造器

2.类型转换

     CLR 最重要的特性之一:类型安全

          概念:CLR允许对象转换为它的类型或者它的任何基类型。

                     CLR总是知道对象的类型是什么,通过GetType方法可知道对象的类型,无法重写GetType方法进行伪装。

                     转换为它的基类型  安全隐式转换

                     转换为它的派生类型   只能显式转换

      is 与 as

           强制类型转换,失败会报错,抛出异常。

           is 检查对象是否兼容指定类型,返回Boolean,永远不会抛出异常

           as 工作方式与强制类型转换一样,但它永远不会抛出异常,不能转换时,结果为null

3.命名空间与程序集

     命名空间是对相关的类型进行逻辑分组,CLR对“命名空间”一无所知,CLR需要知道类型的完整名称以及该类型定义的具体程序集。

     命名空间和程序集不一定相关,同一个命名空间中的类型可以在不同程序集中实现,同一个程序集也可能包含不同的命名空间中的类型。

     关于using指令: C# 的 using 指令是可选的,完全可以输入类型的完全限定名称。using指令简化了类型名称,增强代码可读性。using指令的另一种形式允许为类型或命名空间创建别名

     关于namespace指令:告诉编译器为源代码中出现的每个类型名称附加命名空间名称前缀。


     出来工作的时间不短,虽然学到了各种各样的知识,平时也有通过积累丰富了自己。

     虽然看了,学了了解了很多东西,但是都是只知其然,不知其所以然。只知道该怎么用,却不知道为什么要这么用,盲目的拥抱着别人都说好的东西,自己却没理解好在哪里,有时候自己也会感觉迷茫。一次面试,在面试官的帮助下认识到了自己的不足,并向我推荐了这本书 《CLR via C#》 。

      希望能通过这本书进行系统全面的学习,并在学习中对自己毫无头绪的思路进行整理,希望能走的更远!

猜你喜欢

转载自www.cnblogs.com/a836862772/p/9357798.html