Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# में Generic Methods क्या हैं?

C# में जेनेरिक मेथड्स (Generic Methods)

जेनेरिक मेथड्स आपको एक ही मेथड को अलग-अलग डेटा टाइप्स के साथ काम करने की अनुमति देते हैं, टाइप पैरामीटर (<T>) का उपयोग करके। यह कोड डुप्लिकेशन रोकता है और टाइप सेफ्टी सुनिश्चित करता है।

सिंटैक्स

<modifiers> <return-type> MethodName<T>(<parameters>) where T : constraints {
    // बॉडी
}

उदाहरण: जेनेरिक Swap मेथड

using System;

class Program {
    // जेनेरिक मेथड: किसी भी टाइप के दो वेरिएबल्स स्वैप करता है
    static void Swap<T>(ref T lhs, ref T rhs) {
        T temp = lhs;
        lhs = rhs;
        rhs = temp;
    }

    static void Main() {
        // int के साथ
        int a = 45, b = 60;
        Console.WriteLine($"Before swap: a={a}, b={b}");
        Swap(ref a, ref b);
        Console.WriteLine($"After swap:  a={a}, b={b}");

        // char के साथ
        char c = 'K', d = 'P';
        Console.WriteLine($"\nBefore swap: c={c}, d={d}");
        Swap(ref c, ref d);
        Console.WriteLine($"After swap:  c={c}, d={d}");

        // string के साथ (रेफरेंस टाइप)
        string s1 = "Hello", s2 = "World";
        Console.WriteLine($"\nBefore swap: s1={s1}, s2={s2}");
        Swap(ref s1, ref s2);
        Console.WriteLine($"After swap:  s1={s1}, s2={s2}");
    }
}

आउटपुट

Before swap: a=45, b=60
After swap:  a=60, b=45

Before swap: c=K, d=P
After swap:  c=P, d=K

Before swap: s1=Hello, s2=World
After swap:  s1=World, s2=Hello

जेनेरिक मेथड्स के प्रकार

  • टाइप पैरामीटर मेथड सिग्नेचर में: void Process<T>(T item)
  • कंस्ट्रेंट्स के साथ: where T : IComparable, where T : new(), where T : class, where T : struct, where T : BaseClass
  • एकाधिक टाइप पैरामीटर्स: void Map<TIn, TOut>(TIn input, Func<TIn, TOut> selector)

जेनेरिक मेथड vs नॉन-जेनेरिक ओवरलोड्स

पहलूजेनेरिक मेथडओवरलोड्स
कोड डुप्लिकेशननहींहां (हर टाइप के लिए अलग मेथड)
टाइप सेफ्टीकंपाइल-टाइमकंपाइल-टाइम
वैल्यू टाइप्स के लिए बॉक्सिंगनहींनहीं (अगर सही सिग्नेचर)
रखरखावआसानकठिन (बदलाव हर जगह)

उपयोग के मामले

  • सामान्य एल्गोरिदम: सॉर्टिंग, सर्चिंग, स्वैपिंग, क्लोनिंग।
  • फैक्ट्री मेथड्स: T Create<T>() where T : new()
  • एक्सटेंशन मेथड्स: public static TResult Map<T, TResult>(this T source, ...)
  1. - C# में नेमस्पेसेस क्या हैं

    नेमस्पेस नामों के एक सेट को दूसरे से अलग रखने का एक तरीका प्रदान करने के लिए है। नेमस्पेस डेफिनिशन namespace कीवर्ड से शुरू होती है जिसके बाद नेमस्पेस नाम आता है - namespace namespace_name { // code declarations } नेमस्पेस डिफाइन करें - namespace namespace_name { // code declarations } निम्न

  1. - C# में पैरामीटर्स पास करने के विभिन्न तरीके क्या हैं?

    जब पैरामीटर्स वाले मेथड को कॉल किया जाता है, तो आपको निम्न तीन तरीकों में से किसी का उपयोग करके पैरामीटर्स को मेथड में पास करना होता है:रेफरेंस पैरामीटर्सयह मेथड किसी आर्गुमेंट के मेमोरी लोकेशन का रेफरेंस फॉर्मल पैरामीटर में कॉपी करता है। इसका मतलब है कि पैरामीटर में किए गए परिवर्तन आर्गुमेंट को प्र

  1. - Java में क्लास/स्टैटिक मेथड्स क्या हैं?

    क्लास/स्टैटिक मेथड्स वे मेथड्स हैं जिन्हें क्लास पर ही कॉल किया जाता है, किसी विशेष ऑब्जेक्ट इंस्टेंस पर नहीं। स्टैटिक मॉडिफायर यह सुनिश्चित करता है कि इम्प्लीमेंटेशन सभी क्लास इंस्टेंस में समान है। क्लास/स्टैटिक मेथड्स को इंस्टेंटिएशन के बिना कॉल किया जाता है, जिसका अर्थ है कि स्टैटिक मेथड्स केवल क