在C#中,标记一个类为static的目的是什么?
如果我有一个只包含静态方法的类,我可以将其标记为静态的或者不标记。那么,为什么我要标记这个类为静态呢?如果所有的方法都是静态的,并且我打算永远不添加非静态方法,我是否会不想将类标记为静态的?
我查找了一些类似的问题,但没有与此完全相同的。
在C#中,标记一个类为static的目的是什么?
如果我有一个只包含静态方法的类,我可以将其标记为静态的或者不标记。那么,为什么我要标记这个类为静态呢?如果所有的方法都是静态的,并且我打算永远不添加非静态方法,我是否会不想将类标记为静态的?
我查找了一些类似的问题,但没有与此完全相同的。
将一个类声明为静态的是一种声明性语句,说明你只打算让这个类型拥有静态和常量成员。编译器会强制执行这一点,并防止您意外地向该类型添加实例方法。
其他优点
将一个类标记为static
会带来两个重要的东西。
编译器验证您只将static
成员放入类中。
对您的代码读者来说,这个类只是static
成员的容器的明显说明。
该功能是为响应 NDP v1.0 中的一个错误而发明的,其中System.Environment类中包含了一个不可调用的非static
成员。
List<T>
),所以现在为时已晚。 - Jay Bazuzi如果您想强制一个类只包含静态方法,那么可以将其标记为静态。这是一个典型的辅助类。如果您放置了一个实例方法,编译器会抱怨 - 这是好事。在 .NET Framework 的版本 1 中,有一个类(不记得是哪个类了),它只能与静态方法一起使用。意外的是,其中一个方法没有得到静态修饰符。因为当时不存在这个功能,所以这个错误被发现得非常晚,在发布后才被发现。他们确实将构造函数设为私有,因此该方法无法使用。