什么是更好的:使用静态方法的public static Class或使用静态方法的public class?

时间:2012-01-14 15:29:53

标签: class static c#-3.0

关于类公共类声明,请查看这两段代码:

public class Helper
{
    public static void CallMeganFox(string phoneNumber)
    { //...

public static class Helper
{
    public static void CallMeganFox(string phoneNumber)
    { //...

有什么好用的?为什么?

2 个答案:

答案 0 :(得分:4)

理论上“更好”是明确表示不应该通过使它成为static(第二个选项)来实例化该类,因为它传达意图¹。

然而,在这种简单的情况下,从实际的角度来看,差别就是零差异²。没有人会看这个类并尝试实例化它。

¹正如Cody Gray指出的那样,它也可以帮助你更早地发现错误(例如忘记制作辅助方法static)。虽然这个观点当然有价值,但实际的差异可以忽略不计:编译器会在你试图在任何情况下静态调用该方法时抱怨。

²实际上,并非总是如此。例如,C#编译器不允许您在非static类中定义扩展方法 - 不是因为它不能,而是因为它想要推动您进行“最佳实践”。

答案 1 :(得分:1)

static类不能有非静态方法。如果那是你想要的 - 那就用它吧。

可以找到更多信息in this SO question and answers.