Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
决定将C#类设置为静态_C#_Class_Static_Static Methods - Fatal编程技术网

决定将C#类设置为静态

决定将C#类设置为静态,c#,class,static,static-methods,C#,Class,Static,Static Methods,如果我在C#中有一个Utilities.cs类,它只包含静态方法 e、 g 我应该使类本身是静态的吗 public static Utilities() { ... 使类静态化有什么好处吗?是的,你应该这样做。它阻止人们在不应该的时候实例化类,并使类的用途更加明确。读一读 如果要添加,还需要将类标记为static 您应该仔细考虑实用程序类。想想这些方法是否真的属于那里,或者是否有一种更面向对象的方法 再看看这个和Jon Skeet的答案。是的,你应该把它设为静态。将其设置为静态可防止实

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

e、 g

我应该使类本身是静态的吗

public static Utilities()
{
    ...

使类静态化有什么好处吗?

是的,你应该这样做。它阻止人们在不应该的时候实例化类,并使类的用途更加明确。读一读

如果要添加,还需要将类标记为static

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


再看看这个和Jon Skeet的答案。

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

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


然而,应该谨慎使用静态类和方法,因为这样很难改变程序的行为。静态类和方法非常具体,不能(轻松地)替换,如果使用接口和构造函数注入就是这样。但是,静态类和成员可能有用,但很少有用。过度使用静态会降低软件的灵活性,增加测试难度。

只有静态类不能包含非静态成员,才能防止意外添加它们。正如Ray在回答中提到的,它将使您的代码更清晰。

谢谢,扩展方法不是我所考虑的东西。Utilities类听起来应该是单例的,因此应该是静态的(也注意到了对这种方法的关注)。
public static Utilities()
{
    ...