You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:24:29