我经常在C#文档中看到这种情况。但是它做了什么?
public class Car
{
public Name { get; set; }
}
答案 0 :(得分:48)
这是简写:
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
编译器生成成员变量。这称为automatic property。
答案 1 :(得分:31)
简单来说,它们被称为属性访问者。它们的实现可以解释如下
1.get {return name} 当属性为读取时,将执行get访问器中的代码块。
2.set {name = value} 当属性为已分配新值时,将执行set访问器中的代码块。
例如。(假设您使用的是C#)
class Person
{
private string name; // the name field
public string Name // the Name property
{
get
{
return name;
}
set
{
name = value;
}
}
}
现在,当您引用此属性时,如下所示
Person p = new Person(); //实例化类或创建对象 '人'等级的'p'
System.Console.Write(p.Name); //The get accessor is invoked here
get访问器被调用读取属性的值,即编译器尝试读取字符串'name'的值。
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
set accessor 将值'Stack>分配
输出继电器:
堆栈
答案 2 :(得分:10)
这是一个自动读写属性。这是C#3.0的补充。类似的东西:
public class Car {
private string name;
public string Name { get { return name; } set { name = value; } }
}
除了您无法直接访问支持字段。
答案 3 :(得分:4)
它被称为自动实现的属性,是new to C# 3.0。当您对该属性的访问不需要任何特殊行为或验证时,它是一种更清晰的语法。它的功能类似于:
public class Car
{
private string _name;
public string Name
{
get { return _name; }
set {_name = value; }
}
}
因此它可以节省大量代码,但如果行为或规则需要更改,您可以选择稍后修改访问者逻辑。
答案 4 :(得分:3)
相当于:
private string _Text;
public string Text
{
get { return _Text; }
set { _Text = value; }
}
除非您在课堂内无法访问私有变量。
答案 5 :(得分:1)
摘要:在C#3.0及更高版本中,自动实现的属性生成 财产声明时更简洁 不需要额外的逻辑 物业访问者。