簡體   English   中英

Visual Studio調試器中有些奇怪的東西

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM