एक Extension Method की तरह लगता है।
@
प्रतीक चर नाम एक सी # कीवर्ड के समान होने के लिए अनुमति देता है - मैं उन्हें प्लेग व्यक्तिगत रूप से की तरह से बचने के लिए करते हैं।
आप this
कीवर्ड निकालते हैं, तो यह अब एक विस्तार विधि, बस एक स्थिर विधि हो जाएगा। बुला कोड वाक्य रचना के आधार पर, यह अब संकलन कर सकते हैं, उदाहरण के लिए:
public static class IntegerMethods
{
public static int Add(this int i, int value)
{
return i + value;
}
}
int i = 0;
// This is an "extension method" call, and will only compile against extension methods.
i = i.Add(2);
// This is a standard static method call.
i = IntegerMethods.Add(i, 2);
संकलक बस मानक स्थिर विधि में सभी "विस्तार विधि कॉल" अनुवाद कर देगा किसी भी दर पर कहता है, लेकिन अभी भी विस्तार विधि कॉल केवल होगा this type name
वाक्यविन्यास के अनुसार वैध विस्तार विधियों के विरुद्ध काम करें।
कुछ दिशा-निर्देश
ये मेरे अपने हैं, लेकिन मुझे लगता है कि वे उपयोगी होते हैं।
- विस्तार तरीकों में से खोजे जाने एक समस्या हो सकती है, इसलिए नाम स्थान आप उन्हें में शामिल करने के लिए चुन बारे में सचेत रहें। हम इस तरह
System.Collections
या जो कुछ भी रूप में नेट नामस्थान के तहत बहुत उपयोगी सामान है। कम उपयोगी लेकिन अन्यथा "सामान्य" सामान Extensions.<namespace of extended type>
के तहत जाने लगता है जैसे कि खोज कम से कम सम्मेलन के माध्यम से सुसंगत है।
- अक्सर इस्तेमाल किया प्रकार का विस्तार करने की कोशिश न करें व्यापक दायरे में, आप नहीं
MyFabulousExtensionMethod
अपने पूरे एप्लिकेशन object
पर दिखने चाहते हैं। यदि आप को की आवश्यकता है, तो या तो स्कोप (नेमस्पेस) बहुत विशिष्ट, या विस्तारित विधियों को बाईपास करें और सीधे स्थिर वर्ग का उपयोग करें - इससे इंटेलिसेन्स में मेटाडेटा प्रकार को प्रदूषित नहीं किया जाएगा।
- विस्तार विधियों में, "यह"
null
हो सकता है (वे स्थिर विधि कॉल में कैसे संकलित होते हैं) इसलिए सावधान रहें और यह न मानें कि "यह" शून्य नहीं है (कॉलिंग पक्ष से यह एक सफल विधि की तरह दिखता है एक शून्य लक्ष्य पर कॉल करें)।
ये वैकल्पिक और पूर्ण नहीं हैं, लेकिन मुझे लगता है कि वे आमतौर पर "अच्छी" सलाह के बैनर के अंतर्गत आते हैं। YMMV।
स्रोत
2013-05-10 12:32:45
सी #, बहुत अच्छा व्याकरण, वास्तव में है अगर आप इसे सी की तुलना ++ –