关于c#:自动实现的属性的确切用法是什么

what is the exact use of auto implemented properties

本问题已经有最佳答案,请猛点这里访问。

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

  • 在所有者类中使用属性与支持字段,
  • 我应该选择有或没有私有字段的属性,
  • 属性很重要。

我明白的是,

  • 像使字段只读一样访问
  • 我们可以在
  • 用于数据绑定的setter/getter
  • 我真正想澄清的是,

    1
    2
    3
    4
    5
    6
    7
    public class Employee {
        public string strName;
    }

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

    我的问题:

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

    我知道这是个重复的问题,我提到过。我提出的问题请考虑我的第二点。确切的答案是什么?我不明白。

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

    好的,谢谢大家的回复。我现在明白了。因为我是新来的,所以我抓不住。但现在我明白了。很抱歉浪费了你所有的时间。


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

    1
    2
    3
    public class Employee {
     public string StrName {get; private set;}
    }

    使一个外部只读但内部可设置的属性。你不能用你的公共变量


    在一个类中有一个字段不是一个好主意。使用属性可以更好地封装数据。当您只想让一个字段在类中不需要任何逻辑就可以访问时,您可以使用自动属性。

    在许多场景中,使用类内的字段会使事情随着软件的发展而变得越来越困难。

    例如:假设您

    1
    2
    3
    4
    public class C
    {
        public int Value;
    }

    在代码库中。

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

    但想想这个

    1
    2
    3
    4
    public class C
    {
        public int Value { get; set; }
    }

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