正如其他人已经指出的那样,没有区别,只是一种约定。但是为了证明这一点,您可以看到编译器实际上是如何处理您的代码的,给出以下内容:
public class C
{
public string SomeString { get; set;}
public string SomeString2 { set; get; }
}
这将被视为:
public class C
{
[CompilerGenerated]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private string <SomeString>k__BackingField;
[CompilerGenerated]
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
private string <SomeString2>k__BackingField;
public string SomeString
{
[CompilerGenerated]
get
{
return <SomeString>k__BackingField;
}
[CompilerGenerated]
set
{
<SomeString>k__BackingField = value;
}
}
public string SomeString2
{
[CompilerGenerated]
get
{
return <SomeString2>k__BackingField;
}
[CompilerGenerated]
set
{
<SomeString2>k__BackingField = value;
}
}
}
如您所见,在它们中BackingField
,编译器都会生成一个新的,并且两个属性的主体完全相同。
参考资料。_