[英]Something weird in Visual Studio Debugger
我有一些帶有私有成員_stuffs的類,其類型為IStuffs接口。
當我剛好退出構造函數之前設置斷點時,調試並在斷點處查看變量時,局部變量_stuffs不為null(填充有MyStuffs對象),而this._stuffs為null且返回調用方實例MyModelApp時._stuffs保持為空。 為什么未使用MyStuffs對象設置它?
public class MyModelApp : ModelApp, IModelApp
{
private App _parent;
private IStuffs _stuffs;
public MyModelApp(object parent)
: base(parent)
{
IStuffs _stuffs = new MyStuffs(this);
// Break point here
}
}
您是否意識到您實際上是在分配給局部變量而不是實例變量?
private IStuffs _stuffs;
public MyModelApp(object parent)
: base(parent)
{
IStuffs _stuffs = new MyStuffs(this);//This is a local variable
//If you need local variable also here, just rename it
//or use this qualifier
this._stuffs = new MyStuffs(this);
}
仔細查看您的構造函數:
public MyModelApp(object parent)
: base(parent)
{
IStuffs _stuffs = new MyStuffs(this);
}
您正在聲明一個名為_stuffs
的局部變量 ,並為其指定一個值。 這是不一樣的領域_stuffs
。 我強烈懷疑您不需要局部變量-您只想初始化字段:
public MyModelApp(object parent)
: base(parent)
{
_stuffs = new MyStuffs(this);
}
您正在創建_stuffs
作為新的局部變量 ,而不是將其創建為具有全局范圍的private IStuffs _stuffs
。 我假設您是要分配new MyStuffs(this);
到全局字段_stuffs
而不是創建一個完整的新對象,因為當前您有兩個不同的變量 ,但是由於它們具有相同的名稱而感到困惑。
private IStuffs _stuffs;
public MyModelApp(object parent)
: base(parent)
{
_stuffs = new MyStuffs(this);
}
上面是正確的方法,在全局作用域而不是本地作用域中創建一個新的MyStuffs
對象作為變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.