C# Operator Overloading

Introduction to C# Operator Overloading

C# operators को user defined types जैसे की classes, structures आदि के साथ use करने के लिए redefine करना operator overloading कहलाता है।

जैसा की आपको पता है C# operators को primitive types integer, double आदि के साथ ही प्रयोग किया जाता है। लेकिन C# आपको इन operators को किसी user defined type के सन्दर्भ में overload (redefine) करने की भी ability provide करती है।

Operators को overload करने का मुख्य उद्देश्य user defined types के साथ perform होने वाले operations को simplify करना होता है। उदाहरण के लिए किसी class के object के साथ overloaded unary plus operator को use करके आप आसानी से उसके सभी data members की values को increase कर सकते है।

Operators को overload करने के लिए special operator overload method का प्रयोग किया जाता है। इस method में आप operator को user defined type के अनुरूप operation perform करने के लिए code लिखते है।

सभी C# operators को overload नहीं किया जा सकता है। ऐसे C# operators की list निचे दी जा रही है जिन्हें overload नहीं किया जा सकता है।

  • [] Array Index Operator
  • () Conversion Operator
  • && and || Operators
  • new Operator
  • is Operator
  • as Operator
  • = Equals Operator
  • . Dot Operator
  • ?: Condition Operator
  • -> Pointer Reference Operator

ऊपर दी गयी list के operators के अलावा बाकि सभी unary और binary C# operators को overload किया जा सकता है।

जब आप operators को overload करते है तो उनकी basic functionality change नहीं होती है। उदाहरण के लिए आप + operator को overload करके इसे subtraction perform के लिए नहीं define कर सकते है।

Overload किये जाने पर भी operators primitive types के साथ basic functionality के साथ ही कार्य करते है। यानी की जब + operator को दो integers के साथ प्रयोग किया जायेगा तो वह उनमें addition ही perform करेगा।

C# Operator Overload Method

Operator overload method operator symbol (+, _ आदि ) के साथ define किया गया एक special method होता है। इस method में आप define करते है की operator किसी user defined type के साथ प्रयोग किये जाने पर किस प्रकार operation perform करेगा।

C# operator overload method का general syntax निचे दिया जा रहा है।

public static return-type operator-keyword operator-symbol(argument-list)
{
    //Code that redefine operator to work with a user defined type…
}

जैसा की आप ऊपर दिए गए syntax में देख सकते है operator overload method हमेशा public और static define किया जाना चाहिए। Operator method का return type वह user defined type होता है जिसके लिए इस method को overload किया जाता है।

Operator method को define करने के लिए operator keyword का प्रयोग किया जाता है। Operator keyword के बाद वह operator symbol define किया जाता है जिसे आप overload करना चाहते है।

निचे कुछ ऐसी बातें दी जा रही है जिनका आपको overload operator method define करते समय ध्यान रखना चाहिए।

  • Operator overload method को हमेशा उस type के member के रूप में define किया जाना चाहिए जिसके लिए आप operator को overload कर रहे है।
  • Operator overload method की return value operation का result होती है।
  • Operator overload method को void नहीं define किया जा सकता है।

जब आप किसी unary operator को overload करने के लिये operator method define करते है तो उसमे एक ही parameter define किया जाता है। इसका syntax निचे दिया जा रहा है।

public static return-type operator-keyword operator-symbol(Arg1)
{
    //code here…
}

जब आप किसी binary operator को overload करने के लिए operator method define करते है तो उसमें दो parameters define किये जाते है।

public static return-type operator-keyword operator-symbol(Arg1, Arg2)
{
    //Code here…
}

Example of C# Operator Overloading

C# में operator को overload करना निचे उदाहरण द्वारा समझाया जा रहा है।

using System; class myClass
{
    public int  Num1 = 10;
    public int Num2 = 20;   public void display()
   {
       Console.WriteLine(“Num 1 is : {0}”,Num1);
       Console.WriteLine(“Num 2 is : {0}”,Num2);
   }   public static myClass operator ++(myClass o)
   {
         o.Num1+=1;
         o.Num2+=1;         return o;
   }
}

class myFinalClass
{
     static void Main(string[] args)
     {
          myClass obj = new myClass();
          obj.display();
          obj++;
          obj.display();
     }
}

ऊपर दिया गया उदाहरण निचे दिया गया output generate करता है।

Num1 is 10
Num2 is 20
Num1 is 11
Num2 is 21