自动实现属性的后备字段的可访问性是什么?

时间:2018-10-30 16:32:53

标签: c# private encapsulation accessor

后备字段自动为私有-是吗?

class Car
{
    public String Mark { get; set; }
    public String Model { get; set; }
}

2 个答案:

答案 0 :(得分:3)

自动实现的属性:

public String Mark { get; set; }
public String Model { get; set; }

当您声明示例中所示的自动实现时,编译器将创建一个私有的匿名后备字段,该字段只能通过属性的get和set访问器进行访问。

private string mark;
private string model;
public String Mark { 
   get
   {
   return mark;
   }
   set
   {
   mark = value;
   }
}
public String Model{ 
   get
   {
   return model;
   }
   set
   {
   model = value;
   }
}

答案 1 :(得分:0)

class Car
{
    public string Mark { get; set; }
    string Model { get; set; }
}
  • Car是内部的。
  • 属性Mark是公共的。
  • 属性Model是私有的。

这些注释似乎表明您正在询问备用字段的可访问性。

两个属性均为Auto-Implemented Properties (C# Programming Guide),具有隐藏的,不可访问的后备字段。 C#自动实现属性的文档说:

  

当您声明属性[...]时,编译器将创建一个私有的匿名后备字段,该字段只能通过属性的get和set访问器进行访问。

这与VB不同,在VB中,可以从类Auto-Implemented Properties (Visual Basic)中访问后备字段。

另请参阅:What are the default access modifiers in C#?