CLR Via C# 3rd 阅读摘要 -- Chapter 4 - Type Fundamentals

 All Types are Derived from System.Object

1. 所有的类型都是从System.Object继承下来的,是的,不仅仅是引用类型,值类型System.ValueType也是;

2. System.Object的方法:

[ComVisible(), ClassInterface(ClassInterfaceType.AutoDual)]
  Object
{
    
    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
     Object();
      bool Equals(object obj);
      bool Equals(object objA, object objB);
     void FieldGetter(string typeName, string fieldName,  object val);
     void FieldSetter(string typeName, string fieldName, object val);
    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
      void Finalize();
     FieldInfo GetFieldInfo(string typeName, string fieldName);
      int GetHashCode();
    [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
      Type GetType();
    [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
       bool InternalEquals(object objA, object objB);
    [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
       int InternalGetHashCode(object obj);
    [MethodImpl(MethodImplOptions.InternalCall), SecuritySafeCritical]
      object MemberwiseClone();
    [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
      bool ReferenceEquals(object objA, object objB);
      string ToString();
}

3.  看到C++中常见的邪恶关键字extern,在C#中表示什么意思呢?C#中一般用到extern是在Interop情况下,而在这里呢?

  这些extern的方法是为了执行效率、安全性或者为了实现简单等方面考虑,通过 本地代码来实现。但与Interop不同的是,不需要定义为 static extern ,也无需通过dll来导出函数来实现。这种CLR的内部调用机制,通过一个 InternalCall 的函数定义。参考:《用WinDbg探索CLR世界 [8] InternalCall 的使用与实现 

 Casting Between Types

1. 显式转化与隐式转化;

2. is 与 as操作符,编译时错误CTE与运行时错误RTE。

 Namespaces and Assemblies

1. 对CLR来说,没什么命名空间的概念,必须知道类型的完整名字;

2. 命名空间可以在引用时定义别名。 

 How Things Relate at Runtime

1. 线程栈与应用程序堆

 

 本章小结

  本章主要讲的是类型的一些基本概念,一切类型都是从System.Object继承下来了,在具体的实现中有CLR内部调用机制来进行优化,这与Python的实现有明显的不同,尤其是在内存分配的处理上,.NET显然更高效。然后说明了不同类型之间是如何转换的,以及命名空间的实现原理,命名空间与程序集之间的关系。最后说明了在运行期,CLR是如何使用线程栈和应用程序堆的,并逐步解释了程序执行过程中栈和堆的变化,以及JIT参与的情况。

 

 

 

转载于:https://www.cnblogs.com/bengxia/archive/2010/03/18/1684422.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值