我经常在C#文档中看到这种情况.但是它做了什么?
public class Car
{
public Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Bry*_*tts 48
它是以下的简写:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
Run Code Online (Sandbox Code Playgroud)
编译器生成成员变量.这称为自动属性.
小智 33
简单来说,它们被称为属性访问者.它们的实现可以解释如下
1.get {return name}当属性为Read时,执行get访问器中的代码块.
2.set {name = value}当属性为Assigned a new value 时,将执行set accessor中的代码块.
例如.(假设您使用的是C#)
class Person
{
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
set
{
name = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在当你引用这个属性如下
Person p = new Person(); //实例化类或创建类'Person'的对象'p'
Run Code Online (Sandbox Code Playgroud)System.Console.Write(p.Name); //The get accessor is invoked here
get访问被调用来读,即编译器试图读取字符串"名"的值的属性的值.
2.当您将值(使用参数)分配给'Name'属性时,如下所示
Person p = new Person();
p.Name = "Stack" // the set accessor is invoked here
Console.Writeline(p.Name) //invokes the get accessor
Console.ReadKey(); //Holds the output until a key is pressed
Run Code Online (Sandbox Code Playgroud)
set访问器将值'Stack' 分配给'Name属性,即'Stack'存储在字符串'name'中.
输出继电器:
堆
Meh*_*ari 10
这是一个自动读写属性.这是C#3.0的补充.就像是:
public class Car {
private string name;
public string Name { get { return name; } set { name = value; } }
}
Run Code Online (Sandbox Code Playgroud)
除了你不能直接访问支持字段.