在C#中,運算符重載是指允許對已有的運算符進行重定義或重載,使得它們可以用于用戶自定義類型的操作。通過運算符重載,用戶可以自定義自己的類,使其支持類似于內置類型的運算符操作。要重載一個運算符,需要在類中定義一個與運算符對應的特殊方法。以下是一些常見的運算符以及它們對應的方法:
加法運算符(+):重載為public static YourType operator +(YourType a, YourType b)
減法運算符(-):重載為public static YourType operator -(YourType a, YourType b)
乘法運算符(*):重載為public static YourType operator *(YourType a, YourType b)
除法運算符(/):重載為public static YourType operator /(YourType a, YourType b)
等于運算符(==):重載為public static bool operator ==(YourType a, YourType b)
不等于運算符(!=):重載為public static bool operator !=(YourType a, YourType b)
要重載以上運算符之外的其它運算符,可以查閱C#官方文檔獲取更多信息。需要注意的是,運算符重載方法必須定義為靜態方法,并且至少有一個參數是自定義類型的實例。
以下是一個簡單的示例,展示如何在C#中自定義類型并重載運算符:
public class Vector
{
public int X { get; set; }
public int Y { get; set; }
public Vector(int x, int y)
{
X = x;
Y = y;
}
public static Vector operator +(Vector a, Vector b)
{
return new Vector(a.X + b.X, a.Y + b.Y);
}
public static bool operator ==(Vector a, Vector b)
{
return a.X == b.X && a.Y == b.Y;
}
public static bool operator !=(Vector a, Vector b)
{
return !(a == b);
}
}
class Program
{
static void Main()
{
Vector v1 = new Vector(1, 2);
Vector v2 = new Vector(3, 4);
Vector result = v1 + v2;
Console.WriteLine($"Result: ({result.X}, {result.Y})");
Console.WriteLine($"v1 == v2: {v1 == v2}");
}
}
在上面的示例中,我們定義了一個Vector
類,并重載了加法運算符和等于運算符。通過運算符重載,我們可以直接對Vector
類的實例進行加法運算和比較操作。