dotSITE
Вопросы/Ответы Учебник по ASP.NET Форумы
новости материалы решения форумы группы настройки/о проекте

Перегрузка операторов

В дополнение к стандартным интерпретациям унарных и бинарных операторов в 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);
            }
        }
    

Программа выведет следующее:

        [1, 2] + [2, 3] = [3, 5]
    

<< Предыдущая Следующая >>

Контакт Реклама на сайте Спонсорам Веб мастерам

Лицензионное соглашение - © 2000-2012 dotSITE
Хостинг .NET предоставлен PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development