1 关于this :在C#中非static方法,都会有一个隐含的参数----也就是this,this存放于寄存器ecx中,所以不能对this进行取地址操作,因为他根本就不在内存当中。这个this中存放的就是在堆空间分配的对象的首字节的地址。所以对象调用一个非static方法时,这个方法很“清楚”是“谁”调用了我。
2 static方法可以直接调用static成员:当程序还没有进入到main时static成员就已经在内存中分配好了空间,所以可以被static方法直接调用也可以被其它非static方法调用。static成员是所有对象共享的。
3 static方法不能调用非static成员:因为static方法是没有this这个隐含参数的,所以static方法不能调用非static成员,也就是说他根本不知道非static成员在哪里
4 static方法不用new就可以直接被调用: static方法是在静态存储区分配的,也是在对象产生这前就已经分配好空间了。所以不用new就可以直接调用。和普通函数的唯一区别就是必须用一个类名来引用它。使得这个方法有了作用域的概念。
|