C#将变量声明到if语句中
我想用C#做类似的事情: 但我得到一个错误 错误1当前上下文中不存在名称“a” 有什么想法吗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?),
提前谢谢你 您需要一个公共基类,
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);