Bootstrap

C#—静态方法与非静态方法

1.什么是静态方法

(1)在C#中,静态方法是属于类的方法,而不是类的实例对象的方法,它使用Static关键字进行修饰。简单的说是:静态变量属于类和类的变量,静态方法可以使用对象访问,也可以通过类名访问

例如:

class MyClass
{
    public static void StaticMethod()
    {
        Console.WriteLine("This is a static method.");
    }
}

2.什么是非静态方法

(1)非静态方法是属于类的实力对象的方法,当创建类的一个对象后,可以通过该对象来调用非静态方法。简单的说是:非静态方法属于对象,非静态方法只能使用对象名访问

例如:

class MyClass
{
    public void NonStaticMethod()
    {
        Console.WriteLine("This is a non - static method.");
    }
}

3.调用的方法

(1)静态方法:可以直接通过类名来调用,不需要创建类的实例。

例如:

MyClass.StaticMethod();

 (2)非静态方法必须先创建类的对象,然后通过对象来调用。

例如:

MyClass myObj = new MyClass();
myObj.NonStaticMethod();

4. 什么是静态变量

(1)在C#中,静态变量是用Static关键字修饰的变量,它属于类本身,而不是类的某个实例。

例如:

class MyClass
{
    public static int StaticVariable;
}

(2)非静态方法:没有Static关键字修饰的变量就是非静态变量,它属于类的实例。

例如: 

class MyClass
{
    public int NonStaticVariable;
}

5.访问方法

 (1)静态变量:可以通过类名直接访问静态变量,在类的内部,静态方法也可以访问静态变量。但是,静态变量不能通过类的实例来访问(虽然编译器可能不会报错,但这种方式不符合规范且容易引起误解)

例如:

MyClass.StaticVariable = 10;
Console.WriteLine(MyClass.StaticVariable);

(2) 非静态变量:只能通过类的实例(对象)来访问非静态变量

例如:

MyClass myObj = new MyClass();
myObj.NonStaticVariable = 20;
Console.WriteLine(myObj.NonStaticVariable);

6.使用场景

1.静态变量

  1. 在实现单例模式时,静态变量用于保存唯一的实例。单例模式确保一个类只有一个实例,并提供一个全局访问点来访问这个实例,静态变量可以很好地满足这个需求。
  2. 用于存储类的全局数据,如配置信息、计数器(如记录某个类创建的对象数量)等。例如,一个数据库连接类可能有一个静态变量来存储数据库连接字符串,这个字符串对于整个类的所有操作都是通用的
  3. 在实现单例模式时,静态变量用于保存唯一的实例。单例模式确保一个类只有一个实例,并提供一个全局访问点来访问这个实例,静态变量可以很好地满足这个需求。
  4. 用于存储类的全局数据,如配置信息、计数器(如记录某个类创建的对象数量)等。例如,一个数据库连接类可能有一个静态变量来存储数据库连接字符串,这个字符串对于整个类的所有操作都是通用的

  2. 非静态变量

  1. 当需要存储和对象状态相关的数据时使用非静态变量。例如,在一个图形绘制类中,每个图形对象(如圆形、矩形等)都有自己的位置、颜色等属性,这些属性就应该用非静态变量来存储,因为每个图形对象的这些属性值是不同的。
;