我正在尝试创建一个类型的常量Enum但是我得到一个错误..我的枚举是:
public enum ActivityStatus
{
Open = 1,
Close = 2
}
Run Code Online (Sandbox Code Playgroud)
我有一个使用它的模型:
public class CreateActivity
{
public int Id;
public const ActivityStatus ActivityStatus = ActivityStatus.Open;
}
Run Code Online (Sandbox Code Playgroud)
发生以下错误:
错误1"Help_Desk.Models.CreateActivity.ActivityStatus"常量值的评估涉及循环定义......
但是,如果我更改ActivityStatus属性的名称,它的工作原理!
public class CreateActivity
{
public int Id;
public const ActivityStatus AnyOtherName = ActivityStatus.Open;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
MiM*_*iMo 15
因为c#编译器解释了第三个ActivityStatus:
public const ActivityStatus ActivityStatus = ActivityStatus.Open;
Run Code Online (Sandbox Code Playgroud)
作为定义的常量的名称而不是枚举的名称 - 因此循环引用:您根据常量本身定义常量.
在C#中,您可以对成员和类型使用相同的名称,并且通常解决指定完全限定名称的歧义(即添加命名空间),但根据我的经验,这不是一个好主意,它会使代码混乱:编译器可以弄清楚这是哪个,但是穷人阅读代码时很难确定某个名称是指某个类别或类型或成员.