C# 静态方法与非静态方法的比较

如题所述

C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析。

C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?

让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。

下面我们分四个方面来看看C#静态方法与非静态方法的差异:

C#静态方法与非静态方法比较一、
C#静态成员:
①静态成员属于类所有,非静态成员属于类的实例所有。
②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;

静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占同一块区域。

C#静态方法与非静态方法比较二、
C#静态方法
1、C#静态方法属于类所有,类实例化前即可使用。
2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。
3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,

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

C#静态方法与非静态方法比较三、
C#静态方法是一种特殊的成员方法 它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!
static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!
2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
4.C#中的方法有两种:实例方法,静态方法.

C#静态方法与非静态方法比较四、
C#静态方法中获取类的名称
静态方法中用:
string className = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;

非静态方法中还可以用:
string className = this.GetType().FullName;
温馨提示:内容为网友见解,仅供参考
无其他回答

C# 静态方法与非静态方法的比较
1、C#静态方法属于类所有,类实例化前即可使用。2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,这样,C#静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用。而静态变量的地...

静态方法和非静态方法的区别是什么
在C#中,静态方法(Static Method)与非静态方法(Non-Static Method)的主要区别在于它们的生命周期、内存管理、效率、线程安全以及使用方式。首先,静态方法和静态成员变量在定义上,静态方法需要加上"static"修饰符。生命周期上,静态方法与静态变量属于类,自类装载后常驻内存,直到JVM关闭。而非静态方法...

静态方法和非静态方法的区别是什么
1、静态方法属于类所有,类实例化前即可使用。2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,static内部只能出现static变量和其他static方法!而且static方法中还不能使用this...等关键字....

C#中,静态类和非静态类的区别是什么?
非静态类在使用时必须要实例化,每次使用时都要进行实例化,一般情况下使用比较频繁的类,可以使用静态类,比如LogClass,ConfigClass等等。java 静态类和非静态类的区别 静态类中的成员,方法都必须是静态的,就是必须有关键字 static的, 静态类不需要建立对象可以直接使用,静态类的方法,变量也是,...

C#静态和非静态的区别
区别:1)静态类不需要实例即可使用;非静态类必须实例化后才可以使用;2)静态类中的属性和方法通过 类名.属性 和 类名.方法(...)public static class MyStatic{ public static int Count{ get; set;} public static int Add(int x) { return Count + x; }}……MyStatic.C...

c#中静态字段与非静态字段有什么区别
c#中静态字段和非静态字段以static标识区分,主要区别是静态字段可以直接以类名.字段名方式使用,而非静态字段必须创建类实例才可以使用,示例如下:class Program{ static void Main(string[] args) { Console.WriteLine(test.v1); Console.WriteLine((new test()).v2); }}class test...

C# 静态方法和动态方法的对比,越详细越好
静态方法是在内存对于类只存在一个,所以调用的时候可以用 类.静态方法(),而非静态方法是跟随对象的,每次New了一个对象,就会存在这样一个方法,调用的时候必须得先实例化类,然后用对象调用。

C#中static型变量和非static型变量有何不同
用static关键字符标识的程序元素是静态的,不用static标识的程序元素是非静态.两者的区别在于:静态的东西是在类型加载初始时初始化的,并且与类相关.非静态东西一般放在实例的构造函数中初始化,它是与特定类的实例相关的.

C#中,静态的构造函数跟非静态的有什么区别?
静态构造函数是最早被调用的,只要有静态访问,那么就先调用静态构造函数。其他非静态构造函数会在调用完毕静态的成员之后才被调用。所以一般静态构造函数用来为静态成员初始化,或者作为单件模式中创建对象的唯一入口。例如:private static GoodsManager s_Instance;public static GoodsManager Instance { get{...

c# 程序里 什么时候应该用静态方法 什么时候用非静态方法
你就自己知道在什么时候用了。静态的方法就在在程序启动的时候,系统自己建立一个该方法的实例在内存里面,不需要我们在手动去实例该方法,可以直接调用,还有就是该实例会在内存中占一定的内存空间,这个内存空间只要程序不退出就会一直占用,所以在内存比较小的时候尽量少用静态方法,...

相似回答
大家正在搜