c# - if 语句中的变量声明

标签 c# xaml variables 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();
}

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

最佳答案

如果 bla1Windowbla2Window 都共享一个基类或接口(interface),您可以那样引用它们。在这种情况下,看起来您只是在访问 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();

关于c# - if 语句中的变量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7274757/

相关文章:

c# - 可移植类库和 WebRequest.ContentLength

c# - 异步 - 等待 - 预期线程

c# - 替换书签内容而不删除书签

WPF Storyboard动画即使在设置后也永远循环

java - 当变量不是 "public"或 "private"时会发生什么?

c - 文件中的全局静态变量与函数中的局部静态变量具有可比性吗?

c# - 如何使用证书颁发机构从 C# 连接到 RDS MySQL 数据库?

xaml - 如何在没有黑线和偏移的情况下制作图钉(MapIcon)

c# - 如何在 WPF 中绘制窗口(最佳实践)?

sql - 在 HSQLDB 中,您可以选择一个变量并在 INSERT 中使用它吗