gpt4 book ai didi

c# - 访问不同命名空间中的枚举

转载 作者:行者123 更新时间:2023-11-30 13:18:27 24 4
gpt4 key购买 nike

我在 VS2005 中使用 C#。我有一个类库,其中包含许多不同项目共有的几个枚举。访问其中一个枚举时,我必须指定枚举的整个命名空间路径,即使我已经向包含该枚举的命名空间声明了“using”指令。

例如我有以下枚举:

namespace Company.General.Project1
{
public static class Rainbow
{
[Flags]
public enum Colours
{
Red,
Blue,
Orange
}
}
}

然后在另一个项目中我有:

using Company.General.Project1;

namespace Company.SpecialProject.Processing
{
public class MixingPallette
{
int myValue = Company.General.Project1.Colours.Red;
}
}

即使我有引用包含枚举类的项目的“Using”指令,我仍然必须手写枚举。为什么我不能执行以下操作...

using Company.General.Project1;

namespace Company.SpecialProject.Processing
{
public class MixingPallette
{
int myValue = Colours.Red;
}
}

最佳答案

您的枚举不只是在命名空间中——它是一个嵌套类型。事实上,您的示例“工作”代码不会工作,它必须是

int myValue = (int) Company.General.Project1.Rainbow.Colours.Red;

(您不仅需要包含 Rainbow 部分,而且还没有从枚举到 int 的隐式转换。)

使您的枚举成为顶级类型:

namespace Company.General.Project1
{
[Flags]
public enum Colours
{
Red,
Blue,
Orange
}
}

然后你就可以写:

using Company.General.Project1;

...

Colours x = Colours.Red;
int y = (int) Colours.Red;

(请注意,要有效地使用 [Flags],您应该明确地分配值,例如 1、2、4、8...)


编辑:我一直假设您确实希望能够使用 Colours.Red 等。您可以使用嵌套类型保留当前结构,然后写:

Rainbow.Colours x = Rainbow.Colours.Red;
int y = (int) Rainbow.Colours.Red;

但是,除非您有特殊原因使枚举嵌套,否则我不会这样做。

关于c# - 访问不同命名空间中的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1118625/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com