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
*/
相关推荐
勤奋的知更鸟6 分钟前
Java编程之原型模式
java·开发语言·原型模式
珂朵莉MM19 分钟前
2021 RoboCom 世界机器人开发者大赛-高职组(初赛)解题报告 | 珂学家
java·开发语言·人工智能·算法·职场和发展·机器人
香蕉炒肉34 分钟前
Java优化:双重for循环
java·开发语言
傍晚冰川1 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
PingdiGuo_guo1 小时前
C++智能指针的知识!
开发语言·c++
黄雪超1 小时前
JVM——打开JVM后门的钥匙:反射机制
java·开发语言·jvm
我命由我123451 小时前
Spring Boot 项目集成 Redis 问题:RedisTemplate 多余空格问题
java·开发语言·spring boot·redis·后端·java-ee·intellij-idea
一名用户1 小时前
unity实现自定义粒子系统
c#·unity3d·游戏开发
Rocky4011 小时前
JAVAEE->多线程:锁策略
java·开发语言·jvm
JSUITDLWXL2 小时前
ideal2022.3.1版本编译项目报java: OutOfMemoryError: insufficient memory
java·开发语言