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#》 。
希望能通过这本书进行系统全面的学习,并在学习中对自己毫无头绪的思路进行整理,希望能走的更远!