Wednesday, April 07, 2010

Operator Overload - Part 2 (explicit, implicit)

בהמשך להסבר  איך דורסים את האופרטורים הרגילים, נראה כאן איך אפשר לממס אופרטרים של casting - למה הכוונה, נניח שיש את המחלקה הבאה

class Dolar
{
   public int Value { get; set; }

   public Dolar(int value)
   {
      Value = value;
   }
}


כל פעם שנרצה לייצר מופע נצרך לכתוב כך:

Dolar d1 = new Dolar(50);

למעשה יש דרך שבה נוכל לכתוב כך

Dolar d1 = 50;

וזה בעזרת מימוש implicit operator, נוסיף למחלקה את הקוד הבא

public static implicit operator Dolar(int value)
{
   return new Dolar(value);
}

ולמעשה השמה של מספר למופע של Dolar יקרא לפונקצייה הזאת.

אנחנו יכולים גם להגדיר explicit operator במקרים שאנחנו חוששים לאיבוד מידע


long l = 50;

Dolar d2 = (Dolar)l;

במקרה הזה יתכן שיש במשתנה מספר גדול יותר מ - int ואנחנו רוצים לוודא שהמשתמש יודע מה הוא עושה, ולכן נכתוב

Posted via email from jasper22's posterous