下面两种 POCO 类的实现有什么区别?
class Test
{
int _var1;
string _var2;
public int var1
{
get
{
return _var1;
}
set
{
_var1 = value;
}
}
public string var2
{
get
{
return _var2;
}
set
{
_var2 = value;
}
}
}
和
class Test2
{
int _var1;
string _var2;
public int var1
{
get;
set;
}
public string var2
{
get;
set;
}
}
最佳答案
第一个是带有支持字段的常规属性实现,第二个是 auto-implemented properties并且这些字段不会被使用,因为编译器将为您生成支持字段。
自动实现的属性使您不必编写支持字段和样板代码来访问它们,编译器会在 IL 中创建 C# 无法命名的支持字段,这些字段不会与类中的其他字段名称冲突。
最终效果是它们是等价的,虽然我听说过由于支持字段的名称导致自动属性的序列化问题,让我找到问题...抱歉,我现在似乎找不到它。
关于C#属性,这两个实现有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18781752/