c#:getter/setter

May*_*aya 93 c# getter-setter

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

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

Jus*_*ner 158

这些是自动实现的属性(简称自动属性).

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

private string _type;

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

  • @barlop作为来自谷歌的人,毫无头绪,需要更新什么?哈桑斯先生回答您的意思吗?谢谢。 (2认同)
  • @Aethenosity还有c#7,确保你在setter有一个body时仍然需要第二个字段,但它有一个`=>`语法而且没有return关键字.虽然那不是我的想法.我想到第二个领域是不必要的,尽管我已经发现第二个领域有时是必要的.在这里的示例中,第二个字段不是必需的('cos默认的setter没有正文会这样做),但是回答者把它放入(setter body和second field),向提问者解释他们的行没有第二场正在做. (2认同)

Teo*_*gul 30

这是一个自动属性,它是这个的简写符号:

private string type;
public string Type
{
  get { return this.type; }
  set { this.type = value; }
}
Run Code Online (Sandbox Code Playgroud)

  • ......这就是为什么它被称为支持_field_. (6认同)
  • ...除了无法访问支持字段. (4认同)
  • 不过,您应该能够将其视为带有反射的"<Type> k__BackingField". (4认同)

M.H*_*san 23

在C#6中:

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

public string FirstName { get; set; } = "Ropert";
Run Code Online (Sandbox Code Playgroud)

只读自动属性

public string FirstName { get;} = "Ropert";
Run Code Online (Sandbox Code Playgroud)


Sec*_*und 13

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

没有什么不同的

private string _Type;

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


Mav*_*rik 9

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

更多信息:自动实现的属性


Jam*_*iec 5

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

private string type;
public string Type
{
   get{ return type; }
   set{ type = value; }
}
Run Code Online (Sandbox Code Playgroud)


Ahm*_*deh 5

您还可以使用 lambda 表达式

public string Type
{
    get => _type;
    set => _type = value;
}
Run Code Online (Sandbox Code Playgroud)