if语句中的变量声明

Wil*_*ill 5 c# variables xaml if-statement

在C#中我正在编写一个相对简单的程序我正在尝试创建一个处理多个源的事件处理函数,如下所示:

private void fooHandler(object sender, RoutedEventArgs e)
{
    fooObject objectFoo = (fooObject)sender;
    if (objectFoo.name == "bla1"){
        bla1Window bla = new bla1Window();
    }
    if (objectFoo.name == "bla2"){
        bla2Window bla = new bla2Window();
    }
    .
    .
    .
    else{
        //default stuff happens
    }
bla.Left = this.Left
bla.Top = this.Top
bla.Show();
this.Close();
}
Run Code Online (Sandbox Code Playgroud)

该功能用于窗口切换.问题是,一旦退出if语句,变量就会超出范围.我这样做是因为,查看我定义的单独处理每个事件的一系列函数,除了一个变量声明外,它们都是相同的.有没有办法使这项工作,或者我只是必须坚持每个事件处理程序的功能?

Ree*_*sey 9

如果bla1Windowbla2Window两者共享基类或接口,则可以这样方式引用它们.在这种情况下,看起来你只是访问属性Window,所以你可以这样做:

Window window = null;
fooObject objectFoo = (fooObject)sender;
if (objectFoo.name == "bla1"){
    window = new bla1Window();
}
else if (objectFoo.name == "bla2"){
    window = new bla2Window();
}
.
.
.
else{
    //default stuff happens
}

window.Left = this.Left
window.Top = this.Top
window.Show();
this.Close();
Run Code Online (Sandbox Code Playgroud)

  • @Will因为它有效;-)`var`*需要*为其分配一个初始值,所以它"知道类型".`var objectFoo =(object)null;`只是如此有用;-)`dynamic`没有*this*问题,但是...... (2认同)