c#关键字 static

static 修饰符可用于声明 static 类。 在类、接口和结构中,可以将 static 修饰符添加到字段、方法、属性、运算符、事件和构造函数。 static 修饰符不能用于索引器或终结器

尽管类的实例包含该类的所有实例字段的单独副本,但每个 static 字段只有一个副本。

不可以使用 this 引用 static 方法或属性访问器。

类、接口和 static 类可以具有 static 构造函数。 在程序开始和实例化类之间的某个时刻调用 static 构造函数。

静态类

静态类的所有成员都必须为 static。

csharp 复制代码
//静态类
static class CompanyEmployee
{
    //静态类的所有成员都必须为 static
    public static void DoSomething() { /*...*/ }
    public static void DoSomethingElse() { /*...*/  }
}

常数或类型声明是隐式的 static 成员。 不能通过实例引用 static 成员。 然而,可以通过类型名称引用它。

csharp 复制代码
public class MyBaseC
{
    public struct MyStruct
    {
        public static int x = 100;
    }
}

若要引用 static 成员 x,除非可从相同范围访问该成员,否则请使用完全限定的名称 MyBaseC.MyStruct.x:

csharp 复制代码
Console.WriteLine(MyBaseC.MyStruct.x);

静态字段和方法

csharp 复制代码
public static int employeeCounter;

    public static int AddEmployee()
    {
        return ++employeeCounter;
    }

静态初始化

此示例演示了如何使用尚未声明的 static 字段来初始化另一个 static 字段。 在向 static 字段显式赋值之后才会定义结果。

csharp 复制代码
class Test
{
    static int x = y; //尚未声明的 static 字段y来初始化另一个 static 字段x
    static int y = 5;

    static void Main()
    {
        Console.WriteLine(Test.x);
        Console.WriteLine(Test.y);

        Test.x = 99;
        Console.WriteLine(Test.x);
    }
}
/*
Output:
    0
    5
    99
*/
相关推荐
懒洋洋大魔王1 分钟前
7.Java高级编程 多线程
java·开发语言·jvm
=(^.^)=哈哈哈1 分钟前
Golang如何优雅的退出程序
开发语言·golang·xcode
学习使我变快乐3 分钟前
C++:用类实现链表,队列,栈
开发语言·c++·链表
茶馆大橘5 分钟前
【黑马点评】已解决java.lang.NullPointerException异常
java·开发语言
lmy_t9 分钟前
C++之第十二课
开发语言·c++
马剑威(威哥爱编程)12 分钟前
除了递归算法,要如何优化实现文件搜索功能
java·开发语言·算法·递归算法·威哥爱编程·memoization
我码玄黄24 分钟前
THREE.js:网页上的3D世界构建者
开发语言·javascript·3d
MuseLss34 分钟前
HashMap高频面试知识点
java·开发语言·哈希算法
tyler-泰勒36 分钟前
初始c++:入门基础(完结)
java·开发语言·c++
憨憨小白41 分钟前
函数的高级应用
开发语言·python·青少年编程·少儿编程