C#自动实现的属性

ske*_*ndu 9 .net c#

我对自动实现的属性相当新,并且我发现它们非常直接,但在Microsoft站点中它指出:

在C#3.0及更高版本中,当属性访问器中不需要其他逻辑时,自动实现的属性使属性声明更简洁.它们还使客户端代码能够创建对象.当您声明属性时,如以下示例所示,编译器将创建一个私有的匿名支持字段,该字段只能通过属性的get和set访问器进行访问.

- 自动实现的属性(MSDN)

任何人都可以解释以下语句对自动实现的属性的实际意义:" 它们还使客户端代码能够创建对象. "?

我无法弄清楚这意味着什么.

谢谢.

Ode*_*ded 6

我相信这是指对象初始化器语法,但为什么会出现这种情况并不清楚.自动实现的属性和对象初始值设定项是不同的东西,不应该以这种方式链接在一起.

所以,有一个看起来像这样的类:

public class Cat
{
    // Auto-implemented properties.
    public int Age { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以创建如下对象:

Cat cat = new Cat { Age = 10, Name = "Fluffy" };
Run Code Online (Sandbox Code Playgroud)

注意:

正如评论所述(以及对象初始化程序的MSDN页面声明),您可以将对象初始化程序语法与任何可访问的字段或属性一起使用.同样,自动实现的属性上的MSDN页面甚至提到对象创建这一事实似乎是一个糟糕的文档决策.

  • 您可以对公共字段执行相同操作. (6认同)
  • 和常规属性.基本上,任何可以用`Foo.x = y;`行设置的东西. (3认同)
  • 并且使用普通属性(私有字段,公共设置者)...因此,虽然该规则是真的,但对于非自动属性也是如此. (2认同)