c#静态、非静态

C#静态成员
1.静态成员属于类所有,非静态成员属于实例所有。
2.每创建一个类的实例,都会在内存中为非静态成员新分配一块存储。
C#静态方法
1.C#静态方法属于类所有,类实例化前可使用。
2.非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
3.静态方法在类实例化之前就可以使用,而类中的非静态变量必须实例化以后才能使用。
C#中的静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式。
1.static方法是其中一个成员方法,属于整个类,即不用创建对象就可以使用。
static内部只能出现static变量和其他static方法,且static中不能使用this...等关键字
2.静态方法效率上要比实例要高,静态方法的缺点是不能销毁,而实例化可以销毁。
3.静态方法和静态变量创建后始终使用一块内存,而使用实例化的方式可以创建多个内存。
4.c#中的方法有两种:实例方法和静态方法。
C#静态方法中获取类的类的名称。
静态方法中:string className=System.Reflection.MethodBase.GetCurrentMethod().ReflectedTypeFullName;
非静态方法:string classname=this.GetType().FullName;

非静态的是由程序自动控制变量的生命周期。通常就是变量在进入其作用域的时候被分配,离开作用域的时候被释放。而static则是变量在程序初始化时被分配,直到程序退出前才被释放。也就是说static是按照程序的生命周期来分配释放变量的,而不是变量自己的生命周期。
void func()
{ int a; sataic int b;}
每一次调用该函数变量a都是新的,因为它是进入函数体的时候就被分配,退出函数体的时候被释放。所以多个线程调用该函数,会得到各自的变量a,因为它总是被重新分配的。而变量b不管你是否用到使用该函数,在程序初始化时就被分配。所以多线程调用该函数的时候,总是访问同一变量。

posted @ 2011-11-02 15:48  坏小子小明  阅读(296)  评论(0编辑  收藏  举报