C#在if语句中声明变量

本文关键字:声明 变量 语句 if | 更新日期: 2023-09-27 17:58:56

我想用C#做这样的事情:

if (i == 0)
{
 button a = new button();
}
else
{
 TextBlock a = new TextBlock();
}
mainpage.children.add(a);

但是我得到一个错误

错误1当前上下文中不存在名称"a"

有什么想法吗?

提前感谢!

C#在if语句中声明变量

您需要一个buttonTextblock都派生自的公共基类,如果要在if完成后访问它,则需要在if语句之外声明它。可能是Control

Control a;
if (i == 0)
{
 a = new button();
}
else
{
 a = new TextBlock();
}
mainpage.children.add(a);

不知道你使用的是什么特定的控制工具包(也许是WPF?)我无法提供进一步的建议。但我会查看Add的签名来获得线索——参数声明为什么?

尝试在if/else的作用域之外声明a。像这样:

Control a;
if (i == 0)
{
  a = new button();
}
else
{
  a = new TextBlock();
}
mainpage.children.add(a);

您需要在父作用域中声明变量,并为其提供一个公共基类。System.Windows.Controls.TextBlockSystem.Windows.Controls.Button的公共基类可以是例如System.Windows.UIElementSystem.Windows.FrameworkElement。所以你的代码可以是这样的:

UIElement a;
if (i == 0)
{
    a = new Button();
}
else
{
    a = new TextBlock();
}
mainpage.children.add(a);

我在这里找到了一个关于在条件内声明和分配变量的讨论:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/11a423f9-9fa5-4cd3-8a77-4fda530fbc67

这似乎无法在C#中完成,即使您可以在其他语言中完成