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.静态变量:
- 在实现单例模式时,静态变量用于保存唯一的实例。单例模式确保一个类只有一个实例,并提供一个全局访问点来访问这个实例,静态变量可以很好地满足这个需求。
- 用于存储类的全局数据,如配置信息、计数器(如记录某个类创建的对象数量)等。例如,一个数据库连接类可能有一个静态变量来存储数据库连接字符串,这个字符串对于整个类的所有操作都是通用的
- 在实现单例模式时,静态变量用于保存唯一的实例。单例模式确保一个类只有一个实例,并提供一个全局访问点来访问这个实例,静态变量可以很好地满足这个需求。
- 用于存储类的全局数据,如配置信息、计数器(如记录某个类创建的对象数量)等。例如,一个数据库连接类可能有一个静态变量来存储数据库连接字符串,这个字符串对于整个类的所有操作都是通用的
2. 非静态变量:
- 当需要存储和对象状态相关的数据时使用非静态变量。例如,在一个图形绘制类中,每个图形对象(如圆形、矩形等)都有自己的位置、颜色等属性,这些属性就应该用非静态变量来存储,因为每个图形对象的这些属性值是不同的。