在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语句中创建对象的实例

声明变量和创建新实例可以分步骤完成。您可以简单地在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;
}