<
और >
के बीच पैरामीटर सामान्य प्रकार पैरामीटर हैं। जेनिक्स, एक बहुत ही उच्च स्तर पर, आपको विशेष के बारे में अज्ञात है जो एक या अधिक पैरामीटर, गुणों या विधियों के प्रकार के बारे में अज्ञात है। शब्दों के साथ व्याख्या करना थोड़ा मुश्किल है, लेकिन जेनेरिक का सबसे आम उपयोग संग्रह में है।
जेनेरिक से पहले, अधिकांश डेवलपर्स ने ऑब्जेक्ट्स के संग्रहों का ट्रैक रखने के लिए ArrayList
जैसी चीजों का उपयोग किया। इसका नकारात्मक सुरक्षा सुरक्षा थी; क्योंकि आप को ArrayList
में डाल सकते हैं, जिसका मतलब है कि आपको अपनी ऑब्जेक्ट को अपेक्षित प्रकार (कोड को कम साफ करना) पर डालना था, और आपके पास नहीं था जो ऑब्जेक्ट का प्रकार था (यानी मेरे पास ArrayList
हो सकता है कि मुझे केवल string
ऑब्जेक्ट्स रखने की उम्मीद हो सकती है, लेकिन मैं - गलती से - int
या DbConnection
इत्यादि में डाल सकता हूं), और जब आप अपनी कास्ट करते हैं तो आप रनटाइम तक कभी नहीं खोज पाएंगे अनुत्तीर्ण होना।
ArrayList myStrings = new ArrayList();
myStrings.Add("foo");
myStrings.Add("bar");
myStrings.Add(1); // uh-oh, this isn't going to turn out well...
string string1 = (string)myStrings[0];
string string2 = (string)myStrings[1];
string string3 = (string)myStrings[2]; // this will compile fine but fail at
// runtime since myStrings[2] is an int,
// not a string
जेनरिक पेश किए जाने के बाद, हमें List<T>
कक्षा मिली। यह एक एकल वर्ग है जो एक सामान्य प्रकार का तर्क लेता है - अर्थात्, उन वस्तुओं का प्रकार जिन्हें आप सूची की उम्मीद कर रहे हैं।इस तरह से, मैं हो सकता है एक List<string>
या एक List<int>
है कि एक) कास्टिंग की आवश्यकता होगी नहीं है, क्योंकि indexers string
और int
क्रमश: लौटने के लिए, और ख) संकलन समय पर सुरक्षित हो, के रूप में मुझे पता है कि एक string
या एक int
अलावा कुछ भी नहीं (क्रमशः, क्रमशः) उन सूचियों में रखा जा सकता है।
List<string> myStrings = new List<string>();
myStrings.Add("foo");
myStrings.Add("bar");
myStrings.Add(1); // this will not compile, as an int is not a string
जेनरिक की बात कहने के लिए कि आप क्या वास्तविक प्रकार उद्देश्य यह है कि आप के साथ काम कर रहे हैं की है के बारे में परवाह नहीं है, लेकिन अपने वर्ग पराक्रम का उपभोक्ता। दूसरे शब्दों में, एक सूची string
, int
, DbConnection
इत्यादि को कैसे स्टोर कर सकती है यांत्रिकी के समान हैं, लेकिन जेनेरिक इसे बनाते हैं ताकि आपकी कक्षा के उपभोक्ता से आने वाली इस प्रकार की जानकारी आपके अबास्ट्रक्शन में खो न जाए।
वे [सामान्य प्रकार पैरामीटर] हैं (http://msdn.microsoft.com/en-us/library/ms172192.aspx)। – verdesmarald
धन्यवाद, लेकिन आपने इस सवाल को बंद करने के लिए क्यों कहा, कुछ अन्य उपयोगकर्ताओं की तरह, यह कहकर कि यह वास्तविक सवाल नहीं है? मैं देखता हूं कि मेरे "संदेश" में एक प्रश्न चिह्न है, शायद यह आपके ब्राउज़र में प्रस्तुत नहीं किया गया है? मुझे यह समझने की जरूरत है कि यह साइट कैसे काम करती है ... –