Visual Studio调试器中出现了一些奇怪的东西
本文关键字:调试器 Studio Visual | 更新日期: 2023-09-27 17:58:59
我有一个带有私有成员_stuffs的类,它的类型是IStues接口。
当我在离开构造函数之前设置一个断点时,当在断点处调试和观察变量时,局部变量_stuffs不为null(用MyStuffs Object填充),而这是_当返回调用方实例MyModelApp时,填充为null_填充保持为空。为什么它没有用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
对象作为全局范围中的变量,而不是本地范围。