【发布时间】:2026-01-18 04:50:01
【问题描述】:
我在看一些代码,发现了这种模式:
private string text { get; set; }
public string Text
{
get
{
return text;
}
set
{
text= value;
RaisePropertyChanged("Text");
}
}
我通常只是用私有字段支持我的公共属性。
是否有任何理由应该由这样的私有财产支持财产?我的直觉是说它不应该,这应该由一个字段来支持,对吗?有什么技术原因可以用来备份吗?
【问题讨论】:
-
没有理由这不起作用。你遇到过这个问题吗?
-
这里没有技术限制,尽管我认为在这种情况下最好的做法是始终使用字段。
-
好吧,我看不出这样做的充分理由,但从技术上讲,它没有理由不工作。可能会涉及更多开销,但是如果您这样做(必须比较 IL 输出),这就是为什么我会采用使用变量而不是另一个属性的经典方式。也可能是优化器将私有通用属性变成了一个字段?
-
这个背后似乎有很多意见。至于技术原因,不,没有技术原因无法做到这一点。一个人是否应该这样做真的将取决于正在实施的内容。该类可能足够复杂,以至于私有成员可以从属性背后的抽象中受益。公开类状态的公共属性可能想要使用该抽象。这种方法的好处是根据具体情况而定。
-
我认为在大多数情况下,无论哪种方式都应该没问题。将它作为一个属性使其更加灵活,但它实际上会产生影响的实例很少,您不必担心使用哪个。
标签: c#