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
*/
相关推荐
你不是我我5 小时前
【Java 开发日记】HTTP3 性能更好,为什么内网微服务依然多用 HTTP2?HTTP2 内网优势是什么?
java·开发语言·微服务
tjl521314_216 小时前
04C++ 名称空间(Namespace)
开发语言·c++
赏金术士6 小时前
Kotlin 数据流与单双向绑定
android·开发语言·kotlin
逻辑驱动的ken7 小时前
Java高频面试场景题25
java·开发语言·深度学习·面试·职场和发展
AI人工智能+电脑小能手7 小时前
【大白话说Java面试题】【Java基础篇】第32题:Java的异常处理机制是什么
java·开发语言·后端·面试
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ9 小时前
通过java后端代码来实现给word内容补充格式文本内容控件,以及 设置控件的标记和标题
java·c#·word
無限進步D10 小时前
Java 面向对象高级 接口
java·开发语言
两年半的个人练习生^_^10 小时前
Java日志框架和使用、日志记录规范
java·开发语言·开发规范
杨凯凡11 小时前
【032】排查入门:jstack、heap dump、Arthas 初识
java·开发语言·后端
其实防守也摸鱼11 小时前
无线网络安全--实验 规避WLAN验证之发现隐藏的SSID
java·开发语言·网络·安全·web安全·智能路由器·无线网络安全