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

C# में Method Overloading (मेथड ओवरलोडिंग) क्या है?

C# में मेथड ओवरलोडिंग

मेथड ओवरलोडिंग एक ही क्लास में **एक ही नाम के कई मेथड्स** को परिभाषित करने की अनुमति देता है, बशर्ते उनके **पैरामीटर लिस्ट अलग हों** (संख्या, टाइप, या क्रम)। रिटर्न टाइप अकेले ओवरलोडिंग के लिए पर्याप्त नहीं है।

ओवरलोडिंग के तरीके

  1. पैरामीटर्स की संख्या अलग हो
  2. पैरामीटर्स के डेटा टाइप अलग हों
  3. पैरामीटर्स का क्रम अलग हो (टाइप्स अलग होने पर)
  4. ref/out/in मोडिफायर अलग हों

उदाहरण: पैरामीटर काउंट ओवरलोडिंग (गुणा)

using System;

public class Calculator {
    // 2 पैरामीटर्स
    public static int Multiply(int a, int b) => a * b;
    
    // 3 पैरामीटर्स
    public static int Multiply(int a, int b, int c) => a * b * c;
    
    // 4 पैरामीटर्स
    public static int Multiply(int a, int b, int c, int d) => a * b * c * d;
}

class Program {
    static void Main() {
        Console.WriteLine($"2 nums: {Calculator.Multiply(10, 15)}");       // 150
        Console.WriteLine($"3 nums: {Calculator.Multiply(8, 13, 20)}");    // 2080
        Console.WriteLine($"4 nums: {Calculator.Multiply(3, 7, 10, 7)}");  // 1470
    }
}

आउटपुट

2 nums: 150
3 nums: 2080
4 nums: 1470

उदाहरण: पैरामीटर टाइप ओवरलोडिंग

public void Display(int i) => Console.WriteLine($"Int: {i}");
public void Display(double d) => Console.WriteLine($"Double: {d}");
public void Display(string s) => Console.WriteLine($"String: {s}");

ओवरलोड रिज़ॉल्यूशन नियम

  1. सटीक मैच (इम्प्लिसिट कन्वर्जन के बिना)।
  2. इम्प्लिसिट कन्वर्जन के साथ मैच (int → long → double)।
  3. बॉक्सिंग के साथ मैच (int → object)।
  4. params एरे के साथ मैच (सबसे कम प्राथमिकता)।

डिफ़ॉल्ट पैरामीटर्स vs ओवरलोडिंग (C# 4+)

// ओवरलोडिंग के बजाय डिफ़ॉल्ट पैरामीटर्स
public void Connect(string server, int port = 80, bool ssl = false) { }

// कॉल
Connect("localhost");
Connect("localhost", 443);
Connect("localhost", 443, true);

सावधानियां

  • ref और out ओवरलोडिंग के लिए अलग सिग्नेचर माने जाते हैं, लेकिन void M(int x) और void M(ref int x) एक साथ नहीं हो सकते (कंपाइल एरर)।
  • जेनेरिक मेथड्स नॉन-जेनेरिक से अलग होते हैं: void M<T>(T x) और void M(int x) सह-अस्तित्व में रह सकते हैं।
  • नेम्ड आर्गुमेंट्स (C# 4+) ओवरलोड रिज़ॉल्यूशन को प्रभावित कर सकते हैं।
  1. - C# में एन्यूमरेशन क्या है

    Enum, एन्यूमरेशन है जो नामित कॉन्स्टेंट्स का एक सेट स्टोर करता है जैसे वर्ष, उत्पाद, महीना, मौसम, आदि। Enum कॉन्स्टेंट्स का डिफ़ॉल्ट मान 0 से शुरू होता है और बढ़ता जाता है। इसमें कॉन्स्टेंट्स का एक फिक्स्ड सेट होता है और इसे आसानी से ट्रैवर्स किया जा सकता है। आइए एक उदाहरण देखें। हमने enum को इस तरह

  1. - Java में Method Overloading और Type Promotion

    मेथड ओवरलोडिंग समान नाम वाले कई मेथड्स बनाने में मदद करता है ताकि विभिन्न प्रकार के पैरामीटर्स पर समान क्रिया की जा सके।हम टाइप प्रमोशन का उपयोग तब कर सकते हैं जब वेरिएबल्स समान प्रकार के हों। टाइप प्रमोशन स्वचालित रूप से निचली रेंज के मान को उच्च रेंज के मान में प्रमोट करता है। उदाहरण के लिए, byte

  1. - Java में Method Overloading

    मेथड ओवरलोडिंग स्टैटिक पॉलीमॉर्फिज्म का एक प्रकार है। मेथड ओवरलोडिंग में, हम समान नाम लेकिन अलग पैरामीटर्स वाले कई मेथड्स को परिभाषित कर सकते हैं। निम्नलिखित उदाहरण प्रोग्राम पर विचार करें।उदाहरणpublic class Tester { public static void main(String args[]) { Tester tester = new Tester()