【问题标题】:why to use accessors instead of plain assignment? [duplicate]为什么要使用访问器而不是简单的赋值? [复制]
【发布时间】:2013-12-24 11:29:41
【问题描述】:

为什么在 c#.net 中使用访问器,而我们可以使用简单的赋值,例如

  public string name = "Haymen";

而不是这样做:

 public string Name 
{
  get 
{ 
  return name; 
}
set 
{
   name = value; 
}
}

以及这个属性将如何设置或返回一些东西,因为它显然没有任何方法来设置任何东西?

    public class Movie 
    {
      public int ID { get; set; }
    }

【问题讨论】:

  • 在访问器中你可以放更多的逻辑,样本检查值

标签: c# .net accessor


【解决方案1】:

Skeet 的 » an article 差不多就是这样!您的案例由自动属性覆盖,因此您无需完成所有的写作工作。

【讨论】:

    【解决方案2】:

    这取决于您尝试做什么,您出于多种原因使用访问器,其中之一是确保类属性保持私有并且只能在内部直接操作。

    一个例子:-

    private int _myAge {get; set;}
    
    public int MyAge
    {
       get
       {      
          if(_myAge == null)
          {
             _myAge == GetMyAge();
          }
    
          return _myAge; 
    
       }
    
    }
    

    【讨论】:

      【解决方案3】:

      使用

      public string name = "Haymen";
      
      1. 如果您确定永远不需要调试对该变量的访问(即在有人读/写它时设置断点)。
      2. 如果您知道更改它永远不会影响对象的内部状态(即您依赖或期望的副作用)。
      3. 您希望看到的线条更少,并且您已满足上述要求。
      4. 您想要一个用于 XML 序列化的“仅数据类”,并且您不想创建大量代码来为私有方法进行转换(至少从 C# 3.5 开始)。

      注意话虽如此,一般来说,您不应该将字段公开为公共成员。见here

      【讨论】:

      • 谢谢,请检查已编辑的部分,我们将不胜感激。
      • 我真的很讨厌公共领域,除了非常非常罕见的public static readonly。不要使用公共读/写字段。
      • 同意,但是与所有无缘无故讨厌公共领域的人打交道是否值得。
      猜你喜欢
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 2012-12-20
      • 2017-09-23
      • 2017-09-15
      相关资源
      最近更新 更多