2013-02-12 125 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