静态方法与非静态方法的区别

前言:最近很烦这个静态方法,查阅了一些资料,写下此文,方便以后查阅,废话不多说~咱们开始吧

在C#的类中可以包含两种方法:静态方法和非静态方法


区别:

1.修饰符:静态方法使用static修饰符修饰,非静态方法不用


2.成员:关于静态方法与非静态方法种的成员:

1)静态成员属于类所有;非静态成员属于类的实例所有

2)静态成员当类定义的时候就已经分配好了内存,并且只分配一次;非静态成员每当类被实例化的时候就新分配一次内存,可以分配多次


3.方法:关于静态方法与非静态方法:

1)静态方法属于类所有,类实例化前即可使用;非静态方法只能在类实例化的时候才能使用

2)静态方法只能访问类中的静态成员;非静态方法可以访问类中的任何成员

3)静态方法在类实例化前就可以使用:非静态方法中的非静态变量必须在类实例化后才能分配内存

C#静态方法调用非静态方法时,无法判断非静态方法中非静态变量使用的内存地址,所以无法使用;而静态变量的内存地址对类来说时固定的,所以可以使用。


4.其他:

1)静态方法时一种特殊的成员方法,它不属于类的某一个具体的实例,而是属于类本身,所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式;

2)静态方法可以直接类名.调用;非静态方法需要类实例化后,对象.调用

3)静态方法内部只能出现静态变量和其他静态方法

4)静态方法不能使用this。。。等关键字,以为它是属于整个类!

5)静态方法效率上比非静态方法高

6)静态方法不能自动进行销毁,非静态方法可以自动销毁

7)静态方法、静态成员创建后始终使用同一块内存地址,非静态方法、非静态成员会创建多个内存地址

你可能感兴趣的:(静态方法与非静态方法的区别)