我有Gender
枚号:
public enum Gender
{
Male,
Female,
Other,
Unknown
}
我在Gender
类中还有一个Person
属性:
public Gender Gender { get; set; }
但是我收到了一个错误:
类型'人物'已包含'性别'
的定义
将枚举放在课外可以解决问题,但我想把它放在里面。我没有找到MSDN中针对该特定问题的解决方案。是否有任何命名约定可以解决这类问题?
注意:我不是要求意见,我问的是这种情况是否有一个众所周知的命名约定。
答案 0 :(得分:4)
没有“命名约定”可以解决您希望让一个类型的两个成员共享相同名称的愿望。从C#语言规范的第10.3节,班级成员:
•常量,字段,属性,事件或类型的名称必须与同一类中声明的所有其他成员的名称不同。
•方法的名称必须与同一类中声明的所有其他非方法的名称不同。此外,方法的签名(第3.6节)必须与同一类中声明的所有其他方法的签名不同,
(我的重点)
因此,您必须选择使用不同的名称,或者使用您已明确放弃的选项,将枚举放在datetime
类之外。或者,如果您确实想要封装它,可能会进一步封装它:
Person
虽然我认为这很丑陋。
答案 1 :(得分:1)
这些案例没有“众所周知的命名惯例”。通过使用它来定义类型之外的类型(如错误消息所示),可以更好地处理这种模糊命名
如果类型明确是类型的API表面的一部分,那么将枚举定义为成员似乎很奇怪。
答案 2 :(得分:1)
如前所述,此类案件没有命名惯例。但据我记得,当内部定义的类经常从外部访问时,C#指南不鼓励你使用内部类型定义。
我会说最好在同一名称空间中定义Gender
Enum
因为Gender是Person的公共属性,所以定义了Person。