【问题标题】:C# Common Data ParametersC# 通用数据参数
【发布时间】:2011-01-02 11:53:28
【问题描述】:

您好,

我是 OO 和编程的初学者,我有以下情况:

我有一组我实现的类共享的常量值和枚举。

这些类是独立的,即除了共享这些值之外,它们不会相互交互,因此继承它们是行不通的。

我在想;如果我只用这些常量和枚举创建一个空类,然后在每个类中声明这些类的一个对象,那么我可以使用这些值,例如:

globals.enum.enummember?

这是合理的编程还是有更好的方法?

感谢您的宝贵时间。

【问题讨论】:

  • 您能详细说明这些枚举和常量吗?如果没有具体的例子,风格问题通常很难回答。
  • 也可以告诉我们这些课程。我已经编程了很长时间,但是您描述的这种情况非常罕见-除非您遇到更严重的设计问题。
  • 因为我对此很陌生,我认为我对此采取了程序方法。例如。 int 常量长度 = 12;在 const maxbuffer = 12... public enum LegalShipTypes : byte { Frigate = 1, Cruiser = 2, Destroyer = 3, Submarine = 4, AircraftCarrier = 5 } 我处理的一些例子。这是一款战舰游戏。
  • 船舶类型枚举,是一个很好的枚举,保留它。 length 和 maxbuffer 听起来像是由管理此缓冲区的单个类使用,因此请在其中定义它们。

标签: c# constants globals


【解决方案1】:

最佳做法是简单地将枚举与您的类一起声明,而不是嵌套在类中。实际上,嵌套类型通常不是一个好主意,除非它们是私有的。当然也有例外,但在大多数情况下,没有嵌套会更好。

常量必须在类中定义,但您无需实例化类的对象即可使用它们。它们也可以是公开的,所以你不需要继承任何东西。如果你仔细想想,你应该能够为包含这些常量的类找出一个好名字。

实践表明,常量和枚举很少是全局的。大多数时候,它们与一个或几个类紧密耦合。然后,您应该将这些常量定义为适当类的一部分,并将枚举放在与使用它们的类相同的命名空间中。

【讨论】:

  • +1,只要不是public const int Yes = 1; :) 使用conststatic readonly 也有一些注意事项,但我怀疑这些在这种情况下会很重要。
  • 您应该将其设为 YesNo 枚举并将其放入项目的某个根命名空间中。虽然再次 - 需要这样一个枚举,特别是在全球层面,已经暗示了一些设计缺陷。这需要仔细检查。
【解决方案2】:

您可以使用带有静态成员的静态类来实现所需的行为:

namespace A {
    public static class Enum1 {
       public static readonly int EnumMember1 = 1;
       public static readonly int EnumMember2 = 2;
       public static readonly int EnumMember3 = 3;
    }
}

您应该按以下方式使用它:

int x = A.Enum1.EnumMember2;

【讨论】:

  • WTF? o_O 这与问题有什么关系?
  • 另外 - 这 100% 相当于一个简单的枚举。 WTF x2。
  • 嗯?看起来和我有关。 WTF @你的WTF
  • 在我看来它与问题相匹配,并且是一个很好的答案。问题是关于在许多不同的、不相关的类可访问的应用程序中使用枚举和常量。包含不同信息位的静态类似乎不错。
  • 首先 - 这与普通枚举有什么不同?其次 - 问题是关于风格的。在哪里定义枚举和常量,而不是如何定义它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多