C # में "T" का क्या अर्थ है?


79

मेरे पास एक VB पृष्ठभूमि है और मैं अपनी नई नौकरी के लिए C # में परिवर्तित कर रहा हूं। मैं सामान्य रूप से .NET में बेहतर होने की कोशिश कर रहा हूं। मैंने देखा है कि लोगों द्वारा पोस्ट किए गए नमूनों में कीवर्ड "T" का बहुत उपयोग किया गया है। C # में "T" का क्या अर्थ है? उदाहरण के लिए:

public class SomeBase<T> where T : SomeBase<T>, new()

क्या करता Tहै? मैं इसका उपयोग क्यों करना चाहूंगा?


1
T ~ >> प्रकार: कोई भी प्रकार जो आप चाहते हैं
AminM

जवाबों:


50

यह एक सामान्य प्रकार के पैरामीटर के लिए एक प्रतीक है । उदाहरण के लिए यह कुछ और ही हो सकता है:

public class SomeBase<GenericThingy> where GenericThingy : SomeBase<GenericThingy>, new()

Microsoft द्वारा उपयोग और प्रोत्साहित किया गया केवल T ही डिफ़ॉल्ट है।


45

T एक कीवर्ड प्रति-से नहीं है बल्कि एक सामान्य प्रकार के लिए प्लेसहोल्डर है। Microsoft का जेनरिक से परिचय देखें

समतुल्य VB.Net सिंटैक्स होगा:

Public Class SomeBase(Of T As {Class, New}))

15

T के स्थान पर उपयोग किए जाने वाले किसी अन्य नाम का एक अच्छा उदाहरण wouldहैश तालिका कक्षाएं, उदा

public class Dictionary<K,V> ...

जहां Kकुंजी के लिए और Vमूल्य के लिए खड़ा है । मुझे लगता है कि Tप्रकार के लिए खड़ा है।

आपने इसे आसपास देखा होगा। यदि आप कनेक्शन बना सकते हैं, तो यह काफी मददगार होना चाहिए।


5

यह एक "सामान्य" होगा। जैसा कि लोगों ने पहले ही उल्लेख किया है, अवधारणा की एक Microsoft व्याख्या है। "टी" क्यों - इस प्रश्न को देखें ।

संक्षेप में, यह आपको एक वर्ग / विधि बनाने की अनुमति देता है जो एक विशिष्ट प्रकार के लिए विशिष्ट है। एक शास्त्रीय उदाहरण System.Collections.Generic.List<T>वर्ग है। यह वैसा ही है System.Collections.ArrayList, सिवाय इसके कि यह आपको केवल प्रकार के आइटम को स्टोर करने की अनुमति देता है T। यह प्रकार की सुरक्षा प्रदान करता है - आप (गलती से या अन्यथा) अपनी सूची में गलत प्रकार के आइटम नहीं डाल सकते हैं। System.Collections.Genericनाम स्थान कई अन्य विभिन्न प्रकार के संग्रह जो इस का उपयोग करने में शामिल है।

जहां तक ​​आप इसका उपयोग कर सकते हैं - यह आपके ऊपर है। कई उपयोग-मामले हैं जो समय-समय पर सामने आते हैं। अधिकतर यह किसी प्रकार का एक स्व-निर्मित संग्रह है (जब बिल्टिन पर्याप्त नहीं होते), लेकिन यह वास्तव में कुछ भी हो सकता है।


3

सबसे अच्छा तरीका है कि आप खुद को "जेनरिक", वेब पर कई संसाधनों से परिचित कराएं, यहां एक है

T एक कीवर्ड नहीं है, बल्कि एक नाम है, जैसा कि मैं जानता हूं कि वास्तव में कुछ भी हो सकता है, लेकिन T कन्वेंशन है (जब केवल एक प्रकार की आवश्यकता होती है, coruse की)


2

Tएक सामान्य वर्ग में प्रकार पैरामीटर के लिए नाम है। यह "टाइप" के लिए खड़ा है, लेकिन आप इसे "एलिस" भी कह सकते हैं।

आप अनावश्यक रूप से डुप्लिकेट कोड के बिना एक प्रकार-सुरक्षित तरीके से पुन: प्रयोज्यता बढ़ाने के लिए जेनरिक का उपयोग करते हैं। इस प्रकार, आप के लिए लिखने वर्गों की जरूरत नहीं है ListOfIntegers, ListOfStrings, ListOfChars, ListOfPersonsऔर इतने पर, लेकिन इसके बजाय एक सामान्य वर्ग लिख सकते हैं List<T>और प्रकार की तो इन्स्तांत वस्तुओं List<Int32>, List<string>, List<char>और List<Person>। कंपाइलर आपके लिए काम करता है।


1

इसका अर्थ है "कोई भी वर्ग"। यह "बी", "ए", जो कुछ भी हो सकता है। मुझे लगता है कि "टेम्पलेट" के कारण T का उपयोग किया जाता है


इस संदर्भ में वर्ग की तुलना में टाइप अधिक उपयुक्त होगा क्योंकि T एक संदर्भ और मूल्य प्रकार दोनों हो सकता है।
ब्रायन रासमुसेन

1
मेरा मानना ​​है कि "टेम्पलेट" शब्दावली C ++ टेम्पलेट से आती है। एकल अक्षर पूंजीकृत पैरामीटर सी ++ मैक्रो की तरह बदबू आ रही है।
माइकल मीडोज

T निश्चित रूप से C ++ टेम्प्लेट में एक ही भूमिका के लिए इष्ट है (लेकिन "टाइप" के लिए यह अभी भी छोटा है - यह टाइप का स्थान ले रहा है, टेम्पलेट नहीं)
James Curran
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.