[英]Lazy property getting value before first get
最初有代碼:
public abstract class A
{
private string _someValue;
public string SomeValue
{
get
{
if (_someValue == null)
_someValue = GetValue();
return _someValue;
}
}
protected virtual string GetValue() { /* logic */ }
}
public class B : A
{
protected override string GetValue()
{
return base.GetValue() + GetMoreValue();
}
private string GetMoreValue() { /* logic */ }
}
代碼說:“讓我們發現錯誤!” 並且有錯誤。
現在認真。
我有一個實例B
,當我得到SomeValue
,我得到相同SomeValue
的A
,而MoreValue。
當我在SomeValue
的Get方法上設置斷點時,出現了更奇怪的部分:
事實證明, _someValue
在調用Get方法之前獲取其值。
這里有些錯誤。
更新:
感謝您的評論! 縮短代碼,並在B方法中添加了忘記的返回類型。
原來我犯了一個愚蠢的錯誤。
(我將刪除該問題,但我認為其他人可以從我的工作人員那里學習。)
我看了SomeValue
。
結果? 我開始調試的那一刻被稱為Get SomeValue
。
(這有點奇怪,因為我在Get
方法上有一個未激活的斷點。由於某種原因, watch
es不會觸發斷點。)
*(至於錯誤的值,與繼承無關-
GetMoreValue
只是碰巧返回了一個空字符串。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.