2013-02-12 37 views
7

मैं इस तरह का उपयोग कर सी # कुछ करना चाहता हूँ में चर घोषित:सी # अगर बयान

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

लेकिन मैं एक त्रुटि है कि

त्रुटि 1 नाम 'एक' में मौजूद नहीं है मिल वर्तमान संदर्भ

कोई विचार?

अग्रिम धन्यवाद!

उत्तर

15

आप एक आम आधार वर्ग कि button और Textblock दोनों से निकाले जाते हैं की जरूरत है, और यह 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)। शीर्षक: _ "अगर कथन में परिवर्तनीय घोषित करें" _ अपवाद: _ "नाम 'ए' वर्तमान संदर्भ में मौजूद नहीं है" _ –

+0

@TimSchmelter यह ईमानदार होने के लिए विभाजित बाल है। यह पता चलता है कि, शायद एक चौराहे के रास्ते में जो उपयोगकर्ता को वैकल्पिक और सोचने के लिए निर्देशित करता है कि वे नए हैं, लेकिन फिर भी। –

+0

धन्यवाद! यह पूरी तरह से काम किया! –

6

if/else के दायरे के बाहर a घोषित करने का प्रयास करें। इस तरह:

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

धन्यवाद! यह पूरी तरह से काम किया! –

2

मैं एक शर्त यहाँ के अंदर घोषित करने और चर बताए के बारे में चर्चा पाया:, http://social.msdn.microsoft.com/Forums/en-US/csharplanguage/thread/11a423f9-9fa5-4cd3-8a77-4fda530fbc67

यह सी # में नहीं किया जा सकता लगता है यहां तक ​​कि यदि आप अन्य भाषाओं

+0

धन्यवाद! यह पूरी तरह से काम किया! –

4

आप में कर सकते हैं, हालांकि अपने चर को मूल दायरे में घोषित करने की आवश्यकता है और इसे एक सामान्य आधार वर्ग दें। 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); 
+0

धन्यवाद! यह पूरी तरह से काम किया! –