2009-04-07 20 views
9

कई बार मैंने देखा है ReSharper कोड है कि इस तरह दिखता है उत्पन्न:क्या प्रतिनिधियों के लिए @ उपसर्ग का कोई विशेष अर्थ है?

delegate void myHandler(int i); 
myHandler myHandlerContainer; 
... 
foreach (Delegate @delegate in myHandlerContainer.GetInvocationList()) 
{...} 

'@' में @delegate कि चर किसी विशेष अर्थ अर्थ देना है?
या यह सिर्फ एक सम्मेलन है जिसे मैंने पहले नहीं सामना किया था?

उत्तर

14

MSDN से कुछ और जानकारी:

उपसर्ग "@" पहचानकर्ता के रूप में खोजशब्दों का उपयोग, जो उपयोगी होता है जब अन्य प्रोग्रामिंग भाषाओं के साथ इंटरफ़ेस सक्षम बनाता है। चरित्र @ वास्तव में पहचानकर्ता का हिस्सा नहीं है, इसलिए पहचानकर्ता अन्य भाषाओं में सामान्य पहचानकर्ता के रूप में उपसर्ग के बिना देखा जा सकता है। एक @@ उपसर्ग के साथ पहचानकर्ता को एक क्रियात्मक पहचानकर्ता कहा जाता है। पहचानकर्ताओं के लिए उपसर्ग जो कीवर्ड की अनुमति नहीं है, लेकिन दृढ़ता से शैली के मामले के रूप में निराश हैं।

C# Language Specification: 2.4.2 Identifiers से।

इसलिए '@' के साथ उपसर्ग करना उदा। "प्रतिनिधि" नामक एक वर्ग से प्राप्त करने के लिए जिसे सी # की तुलना में किसी अन्य भाषा में लिखी गई लाइब्रेरी में परिभाषित किया जा सकता है।

किसी भी अन्य मामले में मैं इस वाक्यविन्यास का उपयोग करने की सिफारिश नहीं करता हूं और कोड पठनीयता बढ़ाने के लिए पहचानकर्ताओं को सी # कीवर्ड (जैसे मूल्य के बजाय मूल्य) से अलग करता हूं और भ्रम से बचता हूं कि इसमें कोई विशेष अर्थ संलग्न है या नहीं।

वहाँ भी वहाँ उल्लेख चर नामकरण के बारे में एक और दिलचस्प तथ्य यह है:

युक्त लगातार दो को रेखांकित अक्षर (U + 005F) पहचानकर्ता कार्यान्वयन द्वारा उपयोग के लिए आरक्षित हैं। उदाहरण के लिए, कार्यान्वयन कीवर्ड प्रदान कर सकता है जो दो अंडरस्कोर से शुरू होते हैं।

+0

उत्कृष्ट! यही वह संदर्भ है जिसे मैं ढूंढ रहा था :-) – devstuff

12

"प्रतिनिधि" कीवर्ड से भिन्न नाम को अलग करने के लिए "@delegate" है।

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