1. We have moved from vBulletin to XenForo and you are viewing the site in the middle of the move. Though the functional aspect of everything is working fine, we are still working on other changes including the new design on Xenforo.
    Dismiss Notice

Overload Appropriate Operators

Discussion in 'C#' started by arunlalds, Mar 13, 2010.

  1. arunlalds

    arunlalds Banned

    Joined:
    Mar 12, 2010
    Messages:
    43
    Likes Received:
    2
    Trophy Points:
    0
    Occupation:
    student
    Location:
    India
    Operator overloading is like sugar: a little is sweet, but a lot will make
    you sick. Ensure that you only use this technique for situations that make sense.
    Implement operator +
    Notice that the method is public static and takes both operators as arguments.
    Code:
    public static Vertex3d operator +(Vertex3d a, Vertex3d b)
    {
    return new Vertex3d(a.X + b.X, a.Y + b.Y, a.Z + b.Z);
    }
    
    The same principal can be applied to the -, *, /, %, &, |, <<, >>, !, ~, ++, and -- operators
    as well.
    Implement operator == and operator !=
    These should always be implemented as a pair. Because we’ve already implemented a
    useful Equals() method, just call that instead.
    Code:
    public static bool operator ==(Vertex3d a, Vertex3d b)
    {
    return a.Equals(b);
    }
    public static bool operator !=(Vertex3d a, Vertex3d b)
    {
    return !(a==b);
    }
    
    What if the type is a reference type? In this case, you have to handle null values for
    both a and b, as in this example:
    Code:
    public static bool operator ==(CatalogItem a, CatalogItem b)
    {
    if ((object)a == null && (object)b == null)
    return true;
    if ((object)a == null || (object)b == null)
    return false;
    return a.Equals(b);
    }
    public static bool operator !=(CatalogItem a, CatalogItem b)
    {
    return !(a == b);
    }
    
     

Share This Page