2010-03-02 18 views
6

मैं जो मैं का उपयोग किया है सी # में typedef समस्या, के जवाब के बहुत देखा है, तो मैं है:नेस्टिंग उपनाम

using Foo = System.Collections.Generic.Queue<Bar>; 

और यह अच्छी तरह से काम करता है। मैं परिभाषा को बदल सकता हूं (esp। Bar => चिड़ियाघर आदि बदलें) और फू परिवर्तनों का उपयोग करने वाली हर चीज। महान।

using Foo = System.Collections.Generic.Queue<Bar>; 
using FooMap = System.Collections.Generic.Dictionary<char, Foo>; 

लेकिन सी # भले ही मैं पहली बार में यह परिभाषित किया है, दूसरी पंक्ति में Foo तरह प्रतीत नहीं होता:

अब मैं इस काम करना चाहते हैं।

क्या किसी अन्य हिस्से के रूप में मौजूदा उपनाम का उपयोग करने का कोई तरीका है?

संपादित करें: मैं VS2008

+0

tbh यह एक बग – Codesleuth

+0

की तरह लग रहा Codesleuth के साथ सहमत - यह अभी भी विफल रहता है फू एक उपनाम है एक साधारण प्रकार के लिए (जैसे System.Int32), इसलिए मुझे लगता है कि यह एक कंपाइलर बग है। –

+1

@Codesleuth @Dan, डेव के उत्तर पर टिप्पणी करने की परवाह है? – quamrana

उत्तर

13

उपयोग कर रहा हूँ मानक यह लग रहा है जवाब की तरह नहीं है के अनुसार। Section 16.3.1 से, पैरा 6:

1 जिस क्रम में का उपयोग कर-उर्फ-निर्देशों लिखा जाता है है कोई महत्व नहीं है, और नाम स्थान या टाइप नाम एक का उपयोग कर-alias- द्वारा संदर्भित का संकल्प निर्देश को द्वारा 0 -में अन्य उपयोग-निर्देशों द्वारा इकाई या नामस्थान निकाय के साथ उपयोग-उपनाम-निर्देश या स्वयं द्वारा प्रभावित नहीं किया गया है।

2 अन्य शब्दों में, एक का उपयोग कर-उर्फ-निर्देश का नाम स्थान या टाइप नाम के रूप में अगर तुरंत युक्त संकलन इकाई या नाम स्थान शरीर नहीं का उपयोग कर-निर्देशों था हल हो गई है।

संपादित करें:

मैं सिर्फ देखा ऊपर के लिंक पर संस्करण पुराना एक सा है। 4th Edition में संबंधित पैराग्राफ का पाठ अधिक विस्तृत है, लेकिन फिर भी दूसरों के भीतर उपनामों का उपयोग करके संदर्भ प्रस्तुत करना प्रतिबंधित है। इसमें एक उदाहरण भी शामिल है जो इसे स्पष्ट करता है।

देखते हुए और टाइपिंग आप की तरह कुछ के साथ भाग प्राप्त करने में सक्षम हो सकता है की ताकत के लिए अपनी आवश्यकताओं पर निर्भर करता है:

class Foo : System.Collections.Generic.Queue<Bar> 
{ 
} 
संबंधित मुद्दे