典型的情况是,当你有一个原始数据(数据,因为它是没有任何变换)和相同的数据,但友好的表示:
private String m_RawText;
// Text as it's obtained from, say, database
private string rawText {
get {
if (null == m_RawText)
m_RawText = ReadValueFromDataBase();
return m_RawText;
}
set {
if (m_RawText != value) {
UpdateValueInDataBase(value);
m_RawText = value;
}
}
}
// Friendly encoded text, for say UI
public string Text {
get {
return EncondeText(rawTex);
}
set {
rawText = DecodeText(value);
RaisePropertyChanged("Text");
}
}
// Here we want rawText
public void PerformSomething() {
String text = rawText; // we want raw text...
...
}
// And here we prefer Text
public override String ToString() {
return String.Fromat("Text = {0} ", Text, ...)
}
没有理由这是行不通的。你遇到过这个问题吗? – David
这里没有任何技术限制,尽管我认为最好的做法总是规定在这种情况下使用字段。 –
嗯,我没有看到这样做的好理由,但从技术上说没有理由不应该这样做。可能会涉及更多的开销,但是如果你这样做(必须比较IL输出),这就是为什么我会使用变量而不是其他属性的经典方式。无论如何,也可以是优化器将私有属性转换为字段? –