2013-02-12 148 views
7

我想要做这样的事情用C#:C#声明变量进入if语句

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

,但我得到的是

错误1名“A”中不存在的错误当前背景

任何想法?

谢谢你提前!

回答

15

你需要一个共同的基类,这两个buttonTextblock从派生,它需要if声明以外的声明,如果它是完成if后进行访问。 Control也许?

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

不知道你用什么样的具体的控制工具包(WPF也许?)我不能进一步建议。但我会看Add的签名以获得线索 - 声明的参数是什么?

+0

然而,问题更多的是[范围](http://msdn.microsoft.com/en-us/library/aa691132(V = vs.71)。 ASPX)。标题:_“将变量声明为if语句”_例外:_“在当前上下文中不存在名称'_' – 2013-02-12 08:27:44

+0

@TimSchmelter说实话,这是分裂的头发。这就解决了这个问题,或许是以一种迂回的方式引导用户选择另一种方式,并认为他们是新手,但仍然如此。 – 2013-02-12 08:34:37

+0

谢谢!它总共工作! – 2013-02-12 08:34:45

6

尝试声明a超出if/else的范围。就像这样:

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

谢谢!它总共工作! – 2013-02-12 08:46:10

4

你需要在父范围中声明你的变量,并给它一个公共基类。 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); 
+0

谢谢!它总共工作! – 2013-02-12 08:46:31