学习笔记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;
  

posted @ 2007-04-24 14:30  苹果王子  阅读(224)  评论(0)    收藏  举报