在C#中,即使不使用属性的setter,是否仍需添加它?
关于C#中仅定义Getter的属性的合法性问题
当然可以只定义Getter而省略Setter,这种写法完全符合C#语法规范。
如果你确定完全不需要在任何地方(包括类内部)通过属性的Setter来修改值,直接使用仅含Getter的属性是完全合理的,就像你给出的这段代码:
private string _name; public string Name { get { return _name; } }
这种情况下,你在类内部直接操作私有字段_name来赋值即可,没必要保留一个从来不会用到的private Setter——多余的代码只会增加不必要的维护成本,省略它反而更简洁清晰。
你提到偏好手动实现字段+Getter而非自动属性public string Name { get; private set; },这个选择完全没问题。手动实现的优势在于未来扩展性更强:比如之后需要给Getter添加逻辑(比如返回前格式化字符串、做权限校验),或者需要新增Setter逻辑时,直接修改属性的实现即可,完全不需要改动类外部的调用代码,这正是封装带来的好处。
另外,如果这个属性的值在类初始化后就不会再改变,建议把私有字段_name标记为readonly,这样编译器会强制确保字段只能在构造函数中赋值,避免后续不小心在类内部修改它,进一步强化只读语义:
private readonly string _name; public string Name { get { return _name; } } // 在构造函数中完成初始化 public YourClass(string name) { _name = name; }
内容的提问来源于stack exchange,提问作者Shinglington
相关产品推荐
相关产品推荐

