dotNet 框架程序设计 读书笔记

IS & AS

obj is Employee

obj as Employee

checked & unchecked

checked((byte)(b+200))

checked
{
   
byte b = 100;
   b 
= (byte) (b + 200);
   SomeMethod(
400); // 在checked操作符或语句内调用一个方法并不会对该方法产生任何影响
}

 值类型与引用类型

Equal,GetHashCode,拷贝

重写Equal方法的同时必须重写GetHashCode方法,因为Hashtable要求相等的两个对象拥有相同的HashCode;

Obj.MemberwiseClone()是浅拷贝;

有参属性(索引):

public bool this[int index]
{
    
get{}
    
set{}
}

Char

有三种技巧允许我们进行Char和数值之间的转化:

代码
//直接转化,性能最好
Char c = (Char)65;
int i = (int)c;
//Convert
Char c = Convert.ToChar(65);
int i = Convert.ToInt(c);
//IConvertable
Char c = ((IConvertable)65).ToChar(null);
int i = ((IConvertable)c).ToInt(null);


String内存驻留, Intern, IsInterned

内存驻留:CLR在编译时会为代码中的所有字符串生成一个散列表,Key为字符串,Value为字符串在堆中的引用。

string.Intern(str) 是把某个str加入到散列表中;

string.IsInterned(str) 如果str存在于散列表中,返回str的引用,否则返回null。

委托链

Delegate d = new Delegate(M1);

d +=new Delegate(M2);

M2的Delegate会添加到Delegate d的头部,组成一个委托链;委托链中的每个 delegate调用的时候如果它前面还有其他委托,会被提前调用;

  

垃圾回收:
代龄
根对象,找到所有可达对象,对不可达对象进行回收,压缩management heap

原文地址:https://www.cnblogs.com/end/p/1952234.html