列挙型VSプロパティ名の競合について、これ、これ、およびこの質問があります。
私の質問は命名規則についてではなく、代わりに以下のコードで示されている名前の競合を解決する方法を知りたいです。
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)
なぜそれが起こるのですか?