📜  C#static关键字(1)

📅  最后修改于: 2023-12-03 15:14:27.511000             🧑  作者: Mango

C# static关键字

在C#中,static关键字用于表示一个静态成员或类。本文将重点介绍静态成员的用法和注意事项。

静态成员

静态成员是一个属于类本身而不是实例的成员。它们可以被所有创建自该类的对象所共享。常见的静态成员包括静态字段、静态方法、静态属性和嵌套类中的静态成员等。

静态字段

静态字段是在类代码块外部使用static关键字定义的字段。它们不属于对象,而是属于类本身。静态字段在类的所有实例之间共享,因此,静态字段可以用于存储类级别的信息。

public class MyClass
{
    public static int myStaticField = 42;
}

在上面的例子中,myStaticField是一个静态字段,可以通过类名访问:

int value = MyClass.myStaticField;
静态方法

静态方法也是属于类本身的方法。与静态字段类似,静态方法不是在对象上调用的,而是在类上调用的。

public class MyClass
{
    public static void MyStaticMethod()
    {
        // ...
    }
}

可以使用类名调用静态方法:

MyClass.MyStaticMethod();

静态方法不能直接访问类的实例成员,但可以通过传递实例作为参数来访问它们。

静态属性

静态属性是静态字段的增强版,它们提供getter和setter方法来访问静态字段。静态属性使用和实例属性相同的语法来访问,但使用类名来调用。

public class MyClass
{
    private static int myStaticField = 42;

    public static int MyStaticProperty
    {
        get { return myStaticField; }
        set { myStaticField = value; }
    }
}

可以使用类名来访问静态属性:

int value = MyClass.MyStaticProperty;
MyClass.MyStaticProperty = 100;
注意事项
  • 静态成员不能引用非静态成员,但非静态成员可以引用静态成员。
  • 静态成员在程序运行时只会被初始化一次,并且可以在类的任何实例中共享。
  • 静态成员不能被继承或重写,但可以被隐藏。静态方法可以被声明为虚拟,但不能被声明为抽象或密封。
  • 静态字段和静态构造函数都是在类首次使用静态成员时被初始化。
  • 静态构造函数是在第一次使用类之前被调用,它用于执行任何类级初始化操作。静态构造函数既不能在手动调用也不能进行重载。
  • 静态成员可以在静态构造函数中进行初始化,但不能在构造函数中进行初始化。

以上是C#中静态关键字的介绍,希望能对大家有所帮助。