C# Static 类 - 静态 class 不能有非静态成员

C# Static Classes - A static class cannot have non-static members

我正在尝试了解 c# 语言以及为什么您需要对静态 class 中的所有成员使用 static 关键字。是的,我知道 static class 不能实例化,但是为什么成员 默认情况下不是 static 在 static class,因为我们知道静态 class 不能有非静态成员?

例如: 为什么不能这样

public static class StaticClass
{
    public static int numberTest = 2;
}

是:

public static class StaticClass2
{
    public int numberTest = 2;
}

这是语言设计者的设计决定。当然 static class 只能有 static 个成员,所以 static 限定符是 冗余 。但是如果你被迫把它放在那里,它会让事情变得更清晰,更不容易出错。当您的 classes 和项目变得更大时,这变得越来越重要。

很可能是出于历史原因。你是对的,一个自动的,隐含的 static 会更符合语言的其他部分。

但是 static 类 是 C# 2.0 中的新增内容,更改必须是非破坏性的。