【问题标题】:Should enumerations be placed in a separate file or within another class?枚举应该放在单独的文件中还是放在另一个类中?
【发布时间】:2010-03-17 16:02:30
【问题描述】:

我目前有一个包含以下枚举的类文件:

using System;

namespace Helper
{
    public enum ProcessType
    {
        Word = 0,
        Adobe = 1,
    }
}

或者我应该在使用它的类中包含枚举?

我注意到微软为 DockStyle 创建了一个新的类文件:

using System;
using System.ComponentModel;
using System.Drawing.Design;

namespace System.Windows.Forms
{
    public enum DockStyle
    {
        None = 0, 
        Top = 1,
        Bottom = 2,
        Left = 3,
        Right = 4,.
        Fill = 5,
    }
}

【问题讨论】:

  • 这里的“枚举器”一词让我很困惑,我不由自主地想到了 IEnumerator。你的意思是 Enumerable (= enum)。
  • enum 不是“枚举器”。这是一个“枚举类型”。枚举器是不同的东西。
  • 你应该用枚举或枚举类型替换枚举器
  • 它既不是“可枚举”也不是“枚举器”也不是“枚举类型”——它是“枚举”。 (根据规范,例如第 4.1.9 节。)
  • @Jon Skeet - 是的,这就是规范所说的。我错过了那部分。当我检查时,我只能在规范中找到“枚举”。不过,这很有趣,因为在他关于该部分的注释中,Eric Lippert 始终将其称为“枚举类型”。我猜他和我一样遵循 C 术语。

标签: c# .net enums


【解决方案1】:

如果枚举与一个类相关,则将其设为嵌套类型可能是有意义的。如果它可以在其他地方使用,那么让它成为顶级类型是有意义的。

【讨论】:

  • 我犹豫是否要投票,因为 Jon Skeet 的名声比上帝还高,但它仍然是一个很好的答案。
  • @Critical Failure:如果这是一种安慰,那么今天的投票已经太晚了,无法产生任何影响。
  • 另一方面,Microsoft 建议避免公共嵌套类型,根据 FxCop 规则 (CA1034: NestedTypesShouldNotBeVisible):msdn.microsoft.com/en-us/library/ms182162.aspx
  • 他仍然可以将枚举类型保留在文件中,但保留在顶层。如果它唯一会改变的时间是它的关联类会改变,反之亦然,那么将它保存在文件中仍然很好。
  • @binarycoder:给出的理由对我来说并不是特别有说服力。 FxCop 会讨厌为每个 Protocol Buffer 类生成的构建器……嗯。我仍然认为它们很有用。有时您确实想要比“命名空间”更精细的逻辑分组。
【解决方案2】:

如果没有其他类将使用它们,我通常会看到枚举tions放置在使用它们的类中,否则放在它们自己的文件中。

【讨论】:

    【解决方案3】:

    我倾向于用我所有的通用枚举创建一个 Enum.cs 文件,如果我有只保留一个类的枚举,那么我将它嵌套。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多