c#:getter / setter

时间:2011-07-15 15:03:36

标签: c# getter-setter

我在某个地方看到了类似下面的内容,并想知道这意味着什么。我知道他们是getter和setter,但是想知道为什么字符串Type是这样定义的。谢谢你的帮助。

public string Type { get; set; }

9 个答案:

答案 0 :(得分:147)

这些是Auto-Implemented Properties(简称自动属性)。

编译器将自动生成以下简单实现的等效项:

private string _type;

public string Type
{
    get { return _type; }
    set { _type = value; }
}

答案 1 :(得分:29)

这是一个auto-property,它是这个的简写符号:

private string type;
public string Type
{
  get { return this.type; }
  set { this.type = value; }
}

答案 2 :(得分:21)

在C#6中

现在可以将自动属性声明为字段:

public string FirstName { get; set; } = "Ropert";

只读自动属性

public string FirstName { get;} = "Ropert";

答案 3 :(得分:13)

public string Type { get; set; } 

一样没有什么不同
private string _Type;

public string Type
{    
get { return _Type; }
set { _Type = value; }
}

答案 4 :(得分:8)

这意味着编译器在运行时定义了一个支持字段。这是自动实现属性的语法。

更多信息:Auto-Implemented Properties

答案 5 :(得分:5)

它是一个自动支持的属性,基本上等同于

private string type;
public string Type
{
   get{ return type; }
   set{ type = value; }
}

答案 6 :(得分:4)

这些称为自动属性。

http://msdn.microsoft.com/en-us/library/bb384054.aspx

在功能上(以及在编译的IL方面),它们与具有支持字段的属性相同。

答案 7 :(得分:1)

我知道这是一个老问题,但随着C#6的发布,你现在可以为私人财产做这样的事情了。

public constructor()
{
   myProp = "some value";
}

public string myProp { get; }

答案 8 :(得分:0)

您可以使用lambada表达式

public string Type
{
    get => _type;
    set => _type= value;
}