C#将变量声明到if语句中

C#将变量声明到if语句中,c#,variables,if-statement,C#,Variables,If Statement,我想用C#做类似的事情: 但我得到一个错误 错误1当前上下文中不存在名称“a” 有什么想法吗 提前谢谢你 您需要一个公共基类,button和Textblock都从中派生,如果要在if完成后访问,则需要在if语句之外声明该基类控制可能吗 Control a; if (i == 0) { a = new button(); } else { a = new TextBlock(); } mainpage.children.add(a); 不知道您使用的是什么特定的控制工具包(可能是WPF?),

我想用C#做类似的事情:

但我得到一个错误

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

有什么想法吗


提前谢谢你

您需要一个公共基类,
button
Textblock
都从中派生,如果要在
if
完成后访问,则需要在
if
语句之外声明该基类<代码>控制可能吗

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);

我在这里找到了一个关于在条件中声明和分配变量的讨论:


在C#中似乎无法实现这一点,即使您可以在其他语言中实现

您需要在父范围中声明变量并为其提供一个公共基类。
System.Windows.Controls.TextBlock
System.Windows.Controls.Button
的公共基类可以是例如
System.Windows.UIElement
System.Windows.FrameworkElement
。因此,您的代码可以如下所示:

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

然而,问题更多的是关于。标题:“将变量声明为if语句”异常:“名称“a”在当前上下文中不存在”@TimSchmelter,老实说,这简直是一派胡言。这可能是以一种迂回的方式,引导用户选择另一种选择,并认为他们是新来的,但仍然是这样。@GrantThomas:Imho标题和问题并不是那么不重要,所有这些都是为未来的探视者提供的,他们正在寻找一个答案:为什么他们会得到这个异常,为什么他们不能在
if
之外使用变量。所以一两句关于它的话或一个链接会很有帮助。@TimSchmelter,没错,你说得对。随着现在对老年退休金计划实际问题的了解,以及更恰当的框架,标题应该更改。
UIElement a;
if (i == 0)
{
    a = new Button();
}
else
{
    a = new TextBlock();
}
mainpage.children.add(a);