2011-01-09 5 views
5

एक WinForm आवेदन में मान लें हम program.cs में है:क्या सी # में एक चर के लिए उपनाम बनाना संभव है?

static class Program 
{ 
    public static SomeClass someClass; 

    [STAThread] 
    static void Main() 
    { 
     //something 
    } 
} 

तो वर्तमान परियोजना में अन्य वर्गों में someClass उपयोग करने के लिए हम Program.someClass

सवाल का उपयोग करना चाहिए है हम जैसे उदाहरण के लिए Program.someClass के लिए एक उपनाम बना सकते हैं c1 और के बजाय कोड में c1 का उपयोग करें?

+0

नहीं, स्थानीय वैर बनाने के अलावा इसका संदर्भ है। – BoltClock

+0

यह बहुत धारणा काउंटर-सहज, आईएमएचओ है। यहां तक ​​कि यदि संभव हो (संदर्भ प्रकारों से संबंधित नहीं है और उनके संभावित एकाधिक उपनाम 'जो लक्षणपरक रूप से होते हैं), यह केवल कोड को अधिक समस्याग्रस्त बना सकता है, और लोग जितना खराब कोड लिखते हैं! यह एक तंत्र के लिए कॉल की तरह है, अगर कुछ और नहीं, ओवरकिल, मुझे लगता है। –

+1

क्या बात है? वैसे भी आपको इसे हाथ से बाहर नहीं लिखना चाहिए; Intellisense का उपयोग करें। –

उत्तर

6

तुम सिर्फ कलाई मित्रता के लिए यह अन्य नाम पर देख रहे हैं, एक इनलाइन प्रतिनिधि के रूप में यह कर, इस तरह:

Func<SomeClass> c1 =() => Program.someClass; 

लेकिन मैं मानता हूं कि यह ज्यादातर मामलों में आपका कोड कम स्पष्ट करता है।

+1

@ एचपीटी: 'सी 1() 'आपको उस उदाहरण को वापस कर देगा। तो आप उदाहरण के लिए 'c1()। SomeClassMethod() 'निष्पादित कर सकते हैं। – zerkms

+0

@zerkms: आप सही हैं। वह काम किया। –

+0

@ एचपीटी: यह अभी भी एक निर्भरता है। 'अन्य क्लास' में आप 'c1' इंस्टेंस कैसे प्राप्त करेंगे? यदि आप 'c1' तक पहुंच सकते हैं - तो आप 'Program.someClass' तक भी पहुंच सकते हैं। – zerkms

1

बस प्रत्येक वर्ग इसके साथ काम करने की जरूरत है कि करने के लिए है कि वस्तु पारित

+0

सवाल सिर्फ दोस्त के बारे में है। मुझे पता है कि यह उपयोगी नहीं है। –

+2

@ एचपीटी: प्रोग्रामर ** असली कार्य ** हल करते हैं। ऑब्जेक्ट पास करना बेहतर है। अगर कोई कम स्थैतिक वर्गों का उपयोग करेगा, तो दुनिया बेहतर होगा, इस प्रकार अधिक लचीला कोड लिखें। बेहतर दृष्टिकोण के लिए – zerkms

+0

+1, लेकिन सवाल सिर्फ मेरी जिज्ञासा के बारे में था और मैं इसे मुख्य समस्या को हटाकर इसे हल नहीं करने का एक तरीका ढूंढ रहा हूं: डी –

2

यह मानते हुए कि आप सी/C++ मैक्रो की तरह कुछ हासिल करना चाहते हैं और यह भी गुंजाइश नामकरण के रूप में "कार्यक्रम" से छुटकारा पाने के लिए चाहते हैं, मुझे लगता है कि आप ऐसा नहीं कर सकते सी # में।

+0

यह सादा सच है। – mireazma

संबंधित मुद्दे