自动实现属性的确切用途是什么

what is the exact use of auto implemented properties

可能是重复的问题。 我确实搜索过这个并参考了这些文章

我的理解是,

  1. 访问就像将字段设置为只读
  2. 我们可以在
  3. 中包含一些逻辑
  4. setter/getter用于数据绑定

我真正想澄清的是,

public class Employee {
    public string strName;
}

public class Employee {
    public string strName {get;set;} 
}

我的问题:

  1. 这两种实现有什么区别
  2. 是否有任何地方(我的意思是实际场景)我们可以证明需要自动实现的属性而不是第一个实现,如上所示。

更新

我知道这是一个重复的问题,我已经提到了。请考虑我提出的问题中的第二点。 答案究竟是什么? 我听不懂。

如果我没有任何逻辑来设置该值,这是一个好的做法还是有什么需要?

好的谢谢大家的回复。我现在明白了。因为我很新,所以我无法掌握它。但现在我明白了。抱歉浪费了大家的时间。

使用自动实现的属性,您可以做到

public class Employee {
 public string StrName {get; private set;} 
}

并使外部只读但内部可设置属性。这是您无法使用 public 变量

做的事情

在 class 中有一个字段不是一个好主意。使用属性可以让您 encapsulate 您的数据更好。当你只是想在没有任何逻辑的情况下访问一个字段时 class 那么你可以使用自动属性。

在很多情况下,在您的 class 中使用字段会随着软件的发展而变得更糟。

例如:假设您有

public class C
{
    public int Value;
}

在您的代码库中。

然后你突然意识到Value不能设置为零。然后,您必须将 Value 设为私有并提供 SetValue()GetValue() 方法。这很容易。但是等等,你现在要如何处理依赖于 Value 的所有其他代码?

但是想想这个

public class C
{
    public int Value { get; set; }
}

现在它只需要像 _value 这样的支持字段并实现 settergetter