progs.biz  
Начало > C# > Основы > Урок 42
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Разработка Web-приложений на Microsoft Visual Basic.NET и Microsoft Visual C#.NET. Учебный курс MCAD/MCSD.
 Разработка Web-приложений на Microsoft Visual Basic.NET и Microsoft Visual C#.NET. Учебный курс MCAD/MCSD.
Заказать на Озоне



Яндекс-цитирования

Основы C#. Урок 42. Переопределяем методы класса System.Object

Часть методов класса System.Object, рассмотренных на прошлом уроке, были виртуальными. Это значит, что мы можем переписать их в классе-потомке. Давайте для примера перепишем в нашем классе Vector метод ToString так, чтобы он возвращал не имя класса, а координаты вектора в красивом виде. Это будет выглядеть вот так:

    class Vector
    {
        public float x, y; //Координаты.
        //Переопределяем метод ToString.
        public override string ToString()
        {
            return "x = " + x +", y = " + y;
        }
    }
    //Тестовый класс.
    class App
    {
        static void Main()
        {
            Vector v=new Vector();
            v.x=2;
            v.y=3;
            //Выводим координаты вектора.
            Console.WriteLine(v.ToString());
        }
    }

А в следующем примере мы переопределим виртуальный метод Equals таким образом, чтобы считать равными два вектора с одинаковой длиной (вспомним теорему Пифагора):

    class Vector
    {
        ...
        //Переопределяем метод Equals.
        public override bool Equals(object ob)
        {
            Vector t=(Vector)ob;
            return (t.x*t.x+t.y*t.y)==(this.x*this.x+this.y*this.y);
        }
    }
    //Тестовый класс.
    class App
    {
        static void Main()
        {
            Vector v1=new Vector();
            v1.x=2;
            v1.y=3;
            Vector v2=new Vector();
            v2.x=-3;
            v2.y=2;
            Console.WriteLine(v1.Equals(v2));
        }
    }

В тестовом классе мы проверяем действие переопределенного метода для равных по длине векторов (2, 3) и (-3, 2). Указанный фрагмент выведет True.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz

 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2005 сайт progs.biz
© 2002-2005 Алексеев Игорь