决定创建一个c#静态类

本文关键字:一个 静态类 创建 决定 | 更新日期: 2023-09-27 18:10:33

如果我在c#中有一个Utilities.cs类,它只包含静态方法

public static string DoSomething()
{
    return "something";
}

我应该让类本身是静态的吗?

public static Utilities()
{
    ...

使类静态有什么好处吗?

决定创建一个c#静态类

是的,你应该。它阻止人们在不应该实例化类的时候实例化类,并使类的目的更清晰。阅读MSDN页面获取更多信息。

如果要添加扩展方法,还需要将类标记为静态

你应该仔细考虑实用程序类。想想这些方法是否真的属于那里,或者是否有一种更面向对象的方法。

再看看这个问题和Jon Skeet的答案

主要优点是它使您的设计意图更清晰,并强制执行这些意图。例如,你不能继承一个静态类(即专门化它),你不能创建一个实例(它实际上是一个单例)。这两个都是实用程序类的设计意图。

但是,静态类和方法应该谨慎使用,因为它们很难改变程序的行为。静态类和方法是非常具体的,不能(容易地)替换,如果使用接口和构造函数注入,就会出现这种情况。静态类和成员可能有用,但很少有用。过度使用静态会使您的软件不够灵活,并且更难测试。

是的,您应该将其设置为静态。将其设置为静态可以防止它被实例化。它的主要目的是告诉使用类的人它只包含静态方法,这有助于可读性。

只有静态类不能包含非静态成员,这样可以防止意外添加它们。正如Ray的回答中提到的,它会让你的代码更清晰。