Перегрузка операторов
В дополнение к стандартным интерпретациям унарных и бинарных операторов в C# есть
возможность для классов и структур переопределить их значение. Для этого
используется ключевое слово operator.
Можно перегружать следующие опрераторы: унарные +, -, !, ~, ++, --, true, false и бинарные
+, -, *, /, %, &, |, ^, <<, >>, ==, !=, >, <, >=, <=, к тому же
при перегрузке бинарных операторов перегружается и соответствующие оператор присваивания:
например для + автоматически перегружается +=.
При перегрузке операторов используется синтаксис
operator символ оператора ( x )
|
для унарных и
operator символ оператора ( x, y )
|
для бинарных операторов.
Приведем простой пример:
public struct Vector
{
private double x, y;
public Vector( double x, double y )
{
this.x = x;
this.y = y;
}
public static Vector operator + ( Vector a, Vector b )
{
return new Vector(a.x + b.x, a.y + b.y);
}
public override string ToString()
{
return "[" + x + ", " + y + "]";
}
}
public class Application
{
public static void Main()
{
Vector a(1, 2);
Vector b(2, 3);
Vector c = a + b;
Console.WriteLine("{0} + {1} = {2}", a, b, c);
}
}
|
Программа выведет следующее:
Лицензионное соглашение
- © 2000-2012 dotSITE
Хостинг .NET предоставлен
PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development