为何同一类中无法同时拥有id和set_id属性?
解决C#属性命名冲突问题
问题原因
C#编译器会为属性的set访问器自动生成名为set_<属性名>的方法。当你定义id属性时,编译器会自动生成set_id方法;而你手动定义的set_id属性会和这个自动生成的方法产生命名冲突(C#标识符解析不区分大小写),因此抛出CS0102错误。
无需重命名属性的解决方法
手动实现id属性的访问器
通过自定义后台字段,手动编写id属性的get和set逻辑,避免编译器自动生成set_id方法,从而解决冲突:
private string _id; public string id { get { return _id; } set { _id = value; } } public string set_id { get; set; }
显式接口实现(适用于类实现接口的场景)
如果你的类需要实现某个接口,可以将其中一个属性通过显式接口实现来定义,这样编译器生成的访问器方法会带上接口名称,避免命名冲突。例如:
public interface IMyInterface { string id { get; set; } } public class MyClass : IMyInterface { string IMyInterface.id { get; set; } public string set_id { get; set; } }
内容的提问来源于stack exchange,提问作者Lucas Hoffmann
相关产品推荐
相关产品推荐

