以下是与枚举和属性命名冲突相关的问题:这个,这个 以及 这个。
我的问题不是关于命名规范的,而是想知道如何解决以下代码中的名称冲突:
为什么会发生这种情况呢?
namespace Test
{
public class Person
{
// 1)
// Gender? Gender { get; set; }
// 2)
Gender Gender { get; set; }
public Person ()
{
// 1 - Error CS1061: Type `Test.Gender?' does not contain a definition for `Male' and no extension method `Male' of type `Test.Gender?' could be found (are you missing a using directive or an assembly reference?) (CS1061) (Test)
// 2 - OK
Gender = Gender.Male;
}
}
public enum Gender
{
Male = 1,
Female
}
}
如果我将属性声明为2中的形式Gender Gender { get; set; }
,代码编译成功,然而,如果我将其声明为1中的形式Gender? Gender { get; set; }
(在上面的代码中有注释),则会出现错误。
Error CS1061: Type `Test.Gender?' does not contain a definition for `Male' and no extension method `Male' of type `Test.Gender?' could be found (are you missing a using directive or an assembly reference?) (CS1061) (Test)
为什么会发生这种情况呢?