gpt4 book ai didi

c# - 我是否需要将类设为静态才能使用静态方法?

转载 作者:行者123 更新时间:2023-12-02 01:18:40 25 4
gpt4 key购买 nike

我有以下内容:

public class Sort
{

public static void ShuffleGenericList<T>(IList<T> list)
{
//generate a Random instance
Random rnd = new Random();
//get the count of items in the list
int i = list.Count();

...
...
}
}

我的类也应该是静态的还是仅方法是静态的可以吗?

最佳答案

将类标记为静态完全是可选的(如果它们不包含扩展方法)

换句话说,静态类的成员也必须是静态的,但通常静态成员可以在任何中声明类:

// doesn't compile:
static class StaticClass {
void M() { }
}

// compiles:
class JustClass {
static void M1() { }
void M2() { }
}

从常识来看,在以下情况下,您应该(但不必)将类标记为静态:

  • 它没有实例成员;
  • 永远不应该被实例化;
  • 它不打算用作变量、参数或成员类型;
  • 以上所有内容都是正确的,并且您希望使用编译器强制约束来表达它。

例如,new Sort() 在您的代码中可能有意义也可能没有任何意义,具体取决于类中的内容等。从您提供的示例中,我认为将其标记为静态是还有很长的路要走。

但请注意,当类包含 extension methods 时,您必须将类标记为static您打算在代码的其他部分使用。包含扩展方法的类必须是静态的。

关于c# - 我是否需要将类设为静态才能使用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6433425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com