我在某处看到了以下的代码,想知道这是什么意思。我知道它们是getter和setter,但想知道为什么字符串类型(Type)要这样定义。谢谢帮忙。
public string Type { get; set; }
我在某处看到了以下的代码,想知道这是什么意思。我知道它们是getter和setter,但想知道为什么字符串类型(Type)要这样定义。谢谢帮忙。
public string Type { get; set; }
这些是自动实现属性(Auto Properties)(Auto-Implemented Properties)。
编译器会自动生成以下简单实现的等效代码:
private string _type;
public string Type
{
get { return _type; }
set { _type = value; }
}
public int b { get { return b * 2; } }
,不需要第二个字段。但是我认为当你有一个带有主体的setter时,你需要第二个字段。而这个示例显示了一个带有主体的setter。尽管它与提问者的一行代码相同。 - barlop=>
语法和没有返回关键字。虽然这不是我想要的,我原本认为第二个字段是不必要的,但后来发现有时第二个字段是必要的。在这个例子中,第二个字段是不必要的(因为没有主体的默认setter会执行此操作),但回答者将其放入(setter主体和第二个字段)以解释问题者没有第二个字段的代码行在做什么。 - barlop这是一个自动属性,它是这个的简写:
private string type;
public string Type
{
get { return this.type; }
set { this.type = value; }
}
<Type>k__BackingField
。 - Vlad在 C# 6 中:
现在可以将自动属性声明为一个字段:
public string FirstName { get; set; } = "Ropert";
只读自动属性
public string FirstName { get;} = "Ropert";
public string Type { get; set; }
与做什么没有什么不同
private string _Type;
public string Type
{
get { return _Type; }
set { _Type = value; }
}
这是一个自动生成的属性,基本上相当于:
private string type;
public string Type
{
get{ return type; }
set{ type = value; }
}
您也可以使用 lambda 表达式。
public string Type
{
get => _type;
set => _type = value;
}
public constructor()
{
myProp = "some value";
}
public string myProp { get; }
System.string
。没有其他内容了。 - Jon