对于在类
中声明为static的对象sellprintprivate static string sellprint = "";
public string Sellprint
{
get { return sellprint; }
}
public void SetSellprint(string x)
{
sellprint = x;
}
这是怎么回事 与
不同public string Sellprint
{
get; set;
}
内部。
我在msdn上找不到代码1的任何示例。它转化为什么?
答案 0 :(得分:1)
编译器在第一个返回sellprint
字段值的代码中为您的属性创建 getter 方法,因为您只实现了 getter 方法。第二个代码, getter 和 setter 方法,由编译器和后台字段创建。这就是区别。
您可以使用ILDASM.exe
验证:
首先,请考虑以下代码:
class Foo
{
private string _value;
public string Value
{
get { return _value; }
}
public void SetValue(string str)
{
_value = str;
}
}
正如您所看到的,编译器只生成了一种get_Value
。
如果我们这样更改并将Value
设为自动实现的属性:
class Foo
{
public string Value { get; set; }
}
您可以看到编译器同时创建了 getter (get_Value
)和 setter (set_Value
)方法,并创建了{{1} }属性的支持字段。
没有专业或缺点关于功能,除了在第二个代码中,您使用 less 代码执行相同的工作。
答案 1 :(得分:0)
1)不应该工作,因为没有销售图 - 假设你有一个名为sellprint的字段而忘记在你的代码片段中,你提供了一个get访问器和一个方法而不是set访问器,这有点奇怪。
2)将自动创建所需的字段(并且不会告诉您名称,因此您不会意外地使用它)
但这两者之间没有区别。