什么是更好的:公共静态类与静态方法或公共类与静态方法?

问题描述:

关于班公类的声明,请看看这两段代码:什么是更好的:公共静态类与静态方法或公共类与静态方法?

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

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

什么是更好地使用,为什么?

+0

[决定做一个C#类静态]可能的重复(http://stackoverflow.com/questions/7660094/deciding-to-make-a-c-sharp-class-static) – 2012-01-14 16:18:15

这是在说“好”,使之明确,这个类是不应该通过使它static(第二个选项)被实例化,因为它传达意图¹。

然而,在这样一个简单的情况下,从实际角度来看,它们之间确实存在零差异²。没有人会去看这个班,并尝试实例化它。

¹正如Cody Gray所指出的那样,它也可以帮助您在早期发现错误(例如,忘记制作帮助方法static)。虽然这个观点当然有其优点,但实际差异将会微乎其微:只要您尝试在任何情况下静态调用该方法,编译器就会抱怨。

²事实上,情况并非总是如此。例如,C#编译器不会让您在非static类中定义扩展方法 - 不是因为它不能,而是因为它想要将您推向“最佳实践”。

+0

同意;它不仅传达意图,而且防止错误(例如忘记声明一个新添加的函数static)。 – 2012-01-14 15:34:00

+0

@CodyGray:相应地更新了答案,谢谢。 – Jon 2012-01-14 15:39:58

static类不能有非静态方法。如果这就是你想要的 - 然后使用它。

的更多信息,可以发现in this SO question and answers.