【问题标题】:Why have all static methods/variables in a non-static class?为什么非静态类中包含所有静态方法/变量?
【发布时间】:2011-02-13 07:15:03
【问题描述】:

我遇到了一个非静态的类,但所有的方法和变量都是静态的。例如:

public class Class1 {

    private static string String1 = "one";
    private static string String2 = "two";

    public static void PrintStrings(string str1, string str2)
    {
       ...

所有变量在所有实例中都是静态的,因此没有必要拥有单独的类实例。

有什么理由要创建这样的类吗?

【问题讨论】:

    标签: c# .net oop


    【解决方案1】:

    这个类是在 .NET 1.x 时代写的吗?静态类直到 C# 2.0 才出现。

    【讨论】:

    • 根据我的经验,即使使用 .NET 2.0 或更高版本,许多开发人员也忘记在此类类中使用该关键字!
    • 见鬼,甚至 Visual Studio 都忘记了!启动新的控制台应用程序时查看“程序”类!
    【解决方案2】:

    没有。让它成为一个静态类。

    【讨论】:

      【解决方案3】:

      没有。有些人没有意识到类本身可以是静态的,因此不要包含在类定义中。这很有用,因为它提供了更好的智能感知选项并确保静态添加未来的方法。

      这也隐式地密封了类。

      【讨论】:

        【解决方案4】:

        静态类提供:

        • 仅包含静态成员。

        • 无法实例化。

        • 已密封。

        • 不能包含实例构造函数。

        因此,创建静态类与创建仅包含静态成员和私有构造函数的类基本相同。

        【讨论】:

        • 它不能和“创建一个只包含静态成员和一个私有构造函数的类”一样,因为这样的类需要被实例化。静态类没有。
        【解决方案5】:

        不,如果类中没有实例成员,那么它应该是静态的。

        【讨论】:

          猜你喜欢
          • 2011-12-08
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 2010-11-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-16
          相关资源
          最近更新 更多