C# 在自定义类中给出“已包含错误定义”的编译器

C# 在自定义类中给出“已包含错误定义”的编译器,c#,C#,当创建一个新的自定义类时,我试图像平常一样设置属性,但这种设置导致编译器给我错误 public class Card { public string name { get; set; } public string set { get; set; } public string set_name { get; set; } } 这最终给了我一个错误 类型“Card”已包含“set\u name”的定义 它似乎不是保留字或任何东西 我确信这是我明显缺少的东西,任何帮助都将

当创建一个新的自定义类时,我试图像平常一样设置属性,但这种设置导致编译器给我错误

public class Card
{
    public string name { get; set; }
    public string set { get; set; }
    public string set_name { get; set; }
}
这最终给了我一个错误

类型“Card”已包含“set\u name”的定义

它似乎不是保留字或任何东西


我确信这是我明显缺少的东西,任何帮助都将不胜感激,谢谢

C属性实际上被编译为方法——因此name属性实际上被编译为两个方法:set_namestring value和string get_name

从:

属性是字段的自然扩展。两者都是具有关联类型的命名成员,访问字段和属性的语法相同。但是,与字段不同,属性不表示存储位置。相反,属性具有访问器,用于指定在读取或写入其值时要执行的语句。 .... get访问器对应于返回值为属性类型的无参数方法。除了作为赋值的目标之外,当在表达式中引用属性时,将调用该属性的get访问器来计算该属性的值

集合访问器对应于具有一个名为value的参数且没有返回类型的方法

此外,您可能还应该遵循:

X不使用下划线、连字符或任何其他非字母数字字符。 避免使用与广泛使用的编程语言的关键字冲突的标识符


C属性实际上被编译成方法——因此name属性实际上被编译成两个方法:set_namestring value和string get_name

从:

属性是字段的自然扩展。两者都是具有关联类型的命名成员,访问字段和属性的语法相同。但是,与字段不同,属性不表示存储位置。相反,属性具有访问器,用于指定在读取或写入其值时要执行的语句。 .... get访问器对应于返回值为属性类型的无参数方法。除了作为赋值的目标之外,当在表达式中引用属性时,将调用该属性的get访问器来计算该属性的值

集合访问器对应于具有一个名为value的参数且没有返回类型的方法

此外,您可能还应该遵循:

X不使用下划线、连字符或任何其他非字母数字字符。 避免使用与广泛使用的编程语言的关键字冲突的标识符


看看编译器生成的代码,还有可读性提示:如果我要读取set_name,我会假设它是一个设置名称的方法;但在代码中,它是一个属性。可能会让人困惑…看看编译器生成的。另外,可读性提示:如果我要读取set_name,我会假设它是一个设置名称的方法;但在代码中,它是一个属性。可能会弄糊涂。。。