如何根据命名约定在C#中命名Gender类型的Gender属性?

时间:2016-06-02 07:18:06

标签: c# enums naming-conventions

我有Gender枚号:

public enum Gender
{
    Male,
    Female,
    Other,
    Unknown
}

我在Gender类中还有一个Person属性:

public Gender Gender { get; set; }

但是我收到了一个错误:

  

类型'人物'已包含'性别'

的定义

将枚举放在课外可以解决问题,但我想把它放在里面。我没有找到MSDN中针对该特定问题的解决方案。是否有任何命名约定可以解决这类问题?

注意:我不是要求意见,我问的是这种情况是否有一个众所周知的命名约定。

3 个答案:

答案 0 :(得分:4)

没有“命名约定”可以解决您希望让一个类型的两个成员共享相同名称的愿望。从C#语言规范的第10.3节,班级成员:

  

•常量,字段,属性,事件或类型的名称必须与同一类中声明的所有其他成员的名称不同。

     

•方法的名称必须与同一类中声明的所有其他非方法的名称不同。此外,方法的签名(第3.6节)必须与同一类中声明的所有其他方法的签名不同,

我的重点

因此,您必须选择使用不同的名称,或者使用您已明确放弃的选项,将枚举放在datetime类之外。或者,如果您确实想要封装它,可能会进一步封装它:

Person

虽然我认为这很丑陋。

答案 1 :(得分:1)

这些案例没有“众所周知的命名惯例”。通过使用它来定义类型之外的类型(如错误消息所示),可以更好地处理这种模糊命名

如果类型明确是类型的API表面的一部分,那么将枚举定义为成员似乎很奇怪。

答案 2 :(得分:1)

如前所述,此类案件没有命名惯例。但据我记得,当内部定义的类经常从外部访问时,C#指南不鼓励你使用内部类型定义。 我会说最好在同一名称空间中定义Gender Enum因为Gender是Person的公共属性,所以定义了Person。