我曾经认为结构体是一种次要的东西,或者有较少的功能。也许是因为面向对象编程(OOP)概念将所有的东西都强制转换成类。
从我对 C# 的了解中,我知道将一个类设置为 static,可以确保它的所有成员和函数都是静态的。此外,由于只存在一个实例,我们不能有构造函数来初始化该类。
public static struct mystruct
{
public static int a;
}
我在Stack Overflow上被指出这是一种错误的方法。有人可以详细解释一下吗?
当我创建一个新的cs文件并在控制台中编译它时,我得到了适当的错误提示“static is not valid for this item”。但奇怪的是,当我将它添加到一个现有的工作项目中以查看编译器是否会抱怨时,令我惊讶的是它没有。这是为什么呢?
static
在类型声明上是abstract sealed
的别名(它还允许一些其他的编译时检查,比如确保方法也是静态的)。由于结构体是值类型且不允许多态行为,因此很容易理解为什么不允许使用static
。但是,你可以在结构体上拥有静态成员。 - Steve Guidi