在if语句中创建对象的实例
本文关键字:实例 创建对象 if 语句 | 更新日期: 2023-09-27 18:11:01
我试图创建一个新的实例(一个Expander
),并把它里面的StackPanel
每次一个变量不等于另一个。
问题;然而,似乎是我不能访问if函数之外的变量。我:
" name 'expand'在当前上下文中不存在"
如果我在函数外声明新实例,则应用程序通过If语句按预期运行一次。第二次运行if语句时,我得到了一个错误:
"指定的可视化对象已经是另一个可视化对象的子对象或CompositionTarget的根对象。"
if (lastStatement != first.ToString()) {
i++;
Expander expand = new Expander();
expand.Name = "expander" + i.ToString();
stackpanel1.Children.Add(expand); //This where the error is
} expand.Content += ones; // I need to place this here for the code to work
在这种情况下,我得到:
" name 'expand'在当前上下文中不存在"
第二次尝试(当我在语句外创建实例时)我得到:
"指定的可视化对象已经是另一个可视化对象的子对象或CompositionTarget的根对象。"
声明变量和创建新实例可以分步骤完成。您可以简单地在if
块外部声明它并在内部实例化它,但是,您仍然需要在尝试使用它之前将其设置为有效值,否则您将获得NullReferenceException
。
像这样:
Expander expand;
if (lastStatement != first.ToString())
{
i++;
expand = new Expander();
expand.Name = "expander" + i.ToString();
stackpanel1.Children.Add(expand);
}
else
{
expand = ... // set expand to some other instance of expander
}
expand.Content += ones;
然而,看起来你在使用某种循环。在这种情况下,可能试图仅在某些条件下创建新的Expander
,但在其他情况下重用以前的Expander
。在这种情况下,您还需要在循环块之外声明变量。
像这样:
Expander expand = null;
foreach(...)
{
if (lastStatement != first.ToString())
{
i++;
expand = new Expander();
expand.Name = "expander" + i.ToString();
stackpanel1.Children.Add(expand);
}
expand.Content += ones;
}