我想要做这样的事情用C#:C#声明变量进入if语句
if (i == 0)
{
button a = new button();
}
else
{
TextBlock a = new TextBlock();
}
mainpage.children.add(a);
,但我得到的是
错误1名“A”中不存在的错误当前背景
任何想法?
谢谢你提前!
我想要做这样的事情用C#:C#声明变量进入if语句
if (i == 0)
{
button a = new button();
}
else
{
TextBlock a = new TextBlock();
}
mainpage.children.add(a);
,但我得到的是
错误1名“A”中不存在的错误当前背景
任何想法?
谢谢你提前!
你需要一个共同的基类,这两个button
和Textblock
从派生,它需要if
声明以外的声明,如果它是完成if
后进行访问。 Control
也许?
Control a;
if (i == 0)
{
a = new button();
}
else
{
a = new TextBlock();
}
mainpage.children.add(a);
不知道你用什么样的具体的控制工具包(WPF也许?)我不能进一步建议。但我会看Add
的签名以获得线索 - 声明的参数是什么?
尝试声明a
超出if/else的范围。就像这样:
Control a;
if (i == 0)
{
a = new button();
}
else
{
a = new TextBlock();
}
mainpage.children.add(a);
谢谢!它总共工作! – 2013-02-12 08:46:10
我发现了一个关于这里的条件内声明和分配变量的讨论:http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/11a423f9-9fa5-4cd3-8a77-4fda530fbc67
看来它不能在C#来完成,即使你可以用其他语言
谢谢!它总共工作! – 2013-02-12 08:46:54
你需要在父范围中声明你的变量,并给它一个公共基类。 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);
谢谢!它总共工作! – 2013-02-12 08:46:31
然而,问题更多的是[范围](http://msdn.microsoft.com/en-us/library/aa691132(V = vs.71)。 ASPX)。标题:_“将变量声明为if语句”_例外:_“在当前上下文中不存在名称'_' – 2013-02-12 08:27:44
@TimSchmelter说实话,这是分裂的头发。这就解决了这个问题,或许是以一种迂回的方式引导用户选择另一种方式,并认为他们是新手,但仍然如此。 – 2013-02-12 08:34:37
谢谢!它总共工作! – 2013-02-12 08:34:45