c# - 既然可以直接访问成员变量,为什么还要使用私有(private)属性 setter 呢?

标签 c# properties field

在 C# 中,我们可以这样做:

private string _myField;

public string MyProperty
{
    get { return _myField; }
    private set { _myField = value; }
}

在我们可以根据需要在类中设置 _myField 的同时,在属性中使用私有(private) setter 有什么好处?为什么我们要使用 MyProperty 的 setter?

最佳答案

setter 可以在更新属性时实现其他行为/逻辑,因此您不必在属性可能更新的每个位置手动实现它。

它可以:

  • 自动更新其他字段
  • 验证新值(例如,确保电子邮件地址与正则表达式匹配)
  • 将每次更新字段时需要运行的代码保存在一个地方

例如:

private string _myField;
private int _myField_num_updated;
private DateTime _myField_updated_at;

public string MyProperty
{
    get { return _myField; }
    private set {
      _myField = value;
      _myField_num_updated++;
      _myField_updated_at = DateTime.Now;
    }
}

关于c# - 既然可以直接访问成员变量,为什么还要使用私有(private)属性 setter 呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12014872/

相关文章:

c# - 如何在从 ASP.Net 应用程序作为电子邮件发送的文本消息中包含换行符?

c# - .NET4.5 将组合框绑定(bind)到字典问题。 WPF

Objective-C 字典作为属性/方法访问

bash - 如何从最后一个字段作为变量的bash调用awk

c# - 添加三个静态字段

c# - GridView 和 objectDataSource

javascript - 动态访问类 TypeScript 的方法

ios - Swift didSet 已调用但未更新 UILabel - iOS 属性观察器

elasticsearch - 使用动态字段名称搜索ElasticSearch

c# - UWP/EF Core SqlServer - 线程依赖