相关疑难解决方法(0)

公共字段与自动属性

我们经常被告知我们应该通过为类字段制作getter和setter方法(C#中的属性)来保护封装,而不是将字段暴露给外部世界.

但是很多时候,一个字段只是用来保存一个值,并且不需要任何计算来获取或设置.对于这些,我们都会这样做:

public class Book
{
    private string _title;

    public string Title
    {
          get{ return _title;  }
          set{ _title = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

好吧,我有一个坦白,我不忍心写所有这些(真的,它不必写它,它不得不看它),所以我去流氓和使用公共领域.

然后是C#3.0,我看到他们添加了自动属性:

public class Book
{
    public string Title {get; set;} 
}
Run Code Online (Sandbox Code Playgroud)

这更整洁,我很感激它,但是真的,除了创建一个公共领域之外还有什么不同?

public class Book
{
    public string Title;
}
Run Code Online (Sandbox Code Playgroud)

c# field properties class automatic-properties

333
推荐指数
10
解决办法
6万
查看次数

为什么有空的get set属性而不是使用公共成员变量?

可能重复:
C#:公共字段与自动属性

重复?我认为不会:
这个问题是一样的"为什么要使用属性,而不是公共领域".具有指定getter和setter的属性与公共字段大不相同.我的问题是,是一个没有吸气剂和二传手的财产,任何不同.

由于最近有一个空的getter和setter的能力,使用它们而不是仅仅声明一个公共成员变量有什么好处?

例:

public string MyProperty
{
    get;
    set;
}
Run Code Online (Sandbox Code Playgroud)

与:

public string MyProperty;
Run Code Online (Sandbox Code Playgroud)

c# properties

31
推荐指数
5
解决办法
4万
查看次数

标签 统计

c# ×2

properties ×2

automatic-properties ×1

class ×1

field ×1