【发布时间】:2011-12-23 20:15:47
【问题描述】:
我在 C# 中遇到枚举问题
我这里有一个枚举:
namespace Project.Shared
{
public enum CostType
{
Dollars,
Percent
}
}
我有一个对象试图在这里使用枚举:
using Project.Shared;
namespace Project.Shared.FooNamespace
{
public class Foo
{
public int CostType { get; set; }
public Foo()
{
CostType = (int)CostType.Dollars; // <--- error syntax highlighting on 'Dollars'
}
}
}
这会导致错误:
“int”不包含“Dollars”的定义,并且找不到接受“int”类型的第一个参数的扩展方法“Dollars”(您是否缺少 using 指令或程序集引用?)
我不明白为什么我不能在那里使用我的枚举。有人可以帮我解释一下吗?
【问题讨论】:
-
这可能暗示您不应为枚举使用与属性相同的名称。
-
如果您有枚举并且想要枚举值,为什么要将值存储为 int?
-
@JohnSaunders 据我所知,这种行为通常不被认为是不好的风格。这也是 BCL 中的常见模式。
-
@CodeInChaos:10,000 次错误不会成为正确的。
-
@CodeInChaos:好的,那么您将如何区分名称空间和具有相同名称的类型?