【问题标题】:Property accessors [duplicate]属性访问器 [重复]
【发布时间】:2011-07-11 19:36:09
【问题描述】:

两者有什么根本区别

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

public string Name {get; set;}

【问题讨论】:

标签: c# oop object properties


【解决方案1】:
  1. 您可以访问内部字段,在第二种情况下它是自动生成的
  2. 你可以在VS中设置断点,第二次你不能。

【讨论】:

    【解决方案2】:

    没有什么基本的,您可以通常安全地在它们之间进行更改....直到某些东西使用了字段名称(我在这里查看BinaryFormatter...)。

    否则,不。您通常可以在不破坏事物的情况下进行切换,例如添加逻辑或向字段添加属性。

    【讨论】:

      【解决方案3】:

      基本上没有根本的区别,如果您想为 20 个属性执行此操作,则 #2 只是为您节省了很多行,而您不需要预先封装但希望有未来的选择。

      【讨论】:

        【解决方案4】:

        对于您的类的外部消费者(假设 _name 是私有的),它们是相同的,除非您使用像 BinaryFormatter 这样使用反射来存储对象的内部状态的东西。

        对于您的班级,主要区别在于您在使用自动属性时无权访问该字段。这意味着您不能做一些事情,例如将属性用作 ref 或 out 参数。例如,如果您有一个 int 值并且您正在读取构造函数中的默认值,则不能说 Int32.TryParse(s, out Range)。你可以说Int32.TryParse(s, out _range)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2022-08-13
          • 2012-08-05
          • 2017-12-20
          • 2021-07-04
          • 2018-10-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多