繁体   English   中英

如何避免在C#命名空间中定义的冗余枚举?

[英]How do I avoid redundant enums defined in a C# Namespace?

在修复enum ,我在MSDN Developer Network的网站上遇到了以下内容。

通常最好直接在命名空间内定义枚举,以便命名空间中的所有类都可以同样方便地访问它。 但是,枚举也可以嵌套在类或结构中。

这是有道理的,因为我需要所有的枚举都可用于我项目中的所有类。 但是,我似乎无法找到任何例子。 这是我到目前为止所拥有的:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace myNamespace
{
    enum foo {A, B, C, D}
    enum foo2 {E, F, G, H}

    class Myclass
    {
          magicHappens();
    }
}

我想知道是否需要将enum包含在我在此命名空间中包含的每个文件中,或者如果仅在一个文件中定义它将在编译时将这些枚举定义整合到项目中? 它需要一个特定的课程吗? 或者最好的做法是创建一个除了定义命名空间级枚举之外什么也不做的文件?

任何提示将不胜感激。

在自己的源文件中定义每个枚举(例如foo.cs )。 只要命名空间与您的类相同,它就可以在您的其他代码文件中使用。

Foo.cs:

namespace myNamespace
{
    public enum foo
    {
        A = 0,
        B,
        C,
        D,
    }
}

Foo2.cs:

namespace myNamespace
{
    public enum foo2
    {
        E = 0,
        F,
        G,
        H,
    }
}

等等。

你说你在课堂上创建枚举,但你不是。 这就是类中的枚举:

namespace myNamespace
{

    class Myclass
    {
        enum foo {A, B, C, D}
        enum foo2 {E, F, G, H}
        magicHappens();
    }
}

我认为您可能会将类定义与文件混淆。 您可以在文件中放置任意数量的类或结构或枚举。

通常最好直接在命名空间内定义枚举,以便命名空间中的所有类都可以同样方便地访问它。 但是,枚举也可以嵌套在类或结构中。

你好像误解了上面的陈述。 它表示在名称空间级别定义枚举不在另一种类型的范围内。

做这个:

namespace myNamespace
{
    enum foo {A, B, C, D} //Note enum is outside the class 

    class Myclass
    {
        magicHappens();
    }
}

要这样做:

namespace myNamespace
{
    class Myclass
    {
        magicHappens();

        enum foo //Note enum is inside the class
        {
           A,
           B,
           C,
           D
        }
    }
}

理想情况下,在这种情况下,你应该为你的枚举分别使用“.cs”文件“foo.cs”。

您可以使用public访问修饰符定义enum ,因此在其他程序集中,您可以通过使用引用命名空间来访问它们,如果您希望使用其命名空间使它们可见,则可以定义枚举示例System命名空间,默认情况下在所有类中引用的System ,然后您不需要使用语句添加nay,不建议使用此方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM