学习笔记1
IL--有metadate-表
托管模块的各个部分--
PE32或是PE32+头-PE32则-32位或64位,PE32+64位可用的
还包括文件的类型:GUI,CUI,DLL,并且包含一个生成时间
CLR头-包括-CLR版本,入口方法-Main,以及模块元数据,资源,强命名
原数据:一种类型的表描述的是源代码定义的类型和成员,另一种类型的表描述源带码生成的时间
就在Main方法执行前,clr会检测出Main的代码的所有类型,这导致clr分配一个内部的数据结构
--浪费内存
if #INEFFICIENT
int v=5;
Console.WriteLine("{0} {1}",v,v);/-v 会装箱二次
#end
--不浪费内存
int v=5;
object t=(object)v;
Console.WriteLine("{0} {1}",j,j);/-j 不装箱
//----当不重写方法的时候比如
public struce T:Icomparable
{
puvlic override String ToStirng()
{
return "dd";
}
}
T a=new T();
//-----调用这个不需要装箱
a.ToString();
//--则需要装箱
a.GetType();
//--当值类型调用非虚的继承函数则会导致装箱子
//--正确的Equals
public class Object
{
public virtual Bollean Equals(Object obj)
{
if(obj==Null)return false;
if(obj.GetType()!=obj.GetType())return false;
浙公网安备 33010602011771号