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

时间:2015-01-17 14:32:31

标签: c# .net properties

可能是一个重复的问题。 我确实搜索了这个并引用了这些文章

我理解的是,

  1. 像只读字段一样访问
  2. 我们可以在
  3. 中加入一些逻辑
  4. 用于数据绑定的setter / getter
  5. 我真正想要清楚的是,

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

    我的问题:

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

      我知道它是一个重复的问题,我提到了它。请问我问的第二点问题。 答案究竟是什么? 我无法理解。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

并创建一个外部只读,但内部可设置的属性。这是您无法使用公共变量

的内容

答案 1 :(得分:2)

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

有许多场景在您的课程中使用某个字段会让您的软件发展变得更加困难和困难。

例如:假设你有

public class C
{
    public int Value;
}

在你的代码库中。

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

但想想这个

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

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