Шаг 89.
Язык программирования C#. Начала
Знакомство с классами и объектами. Ключевое слово this (окончание)

    На этом шаге мы рассмотрим другие применения этого ключевого слова.

    Ключевое слово this используется и в иных ситуациях. Например, при перегрузке конструкторов в классе ключевое слово this с круглыми скобками (и аргументами, если необходимо) используется для вызова одной версии конструктора в другой версии конструктора. Выражение вида this (аргументы) указывается через двоеточие после закрывающей круглой скобки в описании конструктора. Оно означает выполнение программного кода той версии конструктора, которая соответствует аргументам, указанным с ключевым словом this. Общий шаблон выглядит так:

  public Конструктор(аргументы): this(аргументы) {
    // Команды в теле конструктора
  }

    Для большей наглядности рассмотрим небольшой пример.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace pr89_1
{
    // Класс с перегрузкой конструкторов: 
    class MyClass
    {
        // Целочисленные поля: 
        public int alpha;
        public int bravo;
        // Конструктор с одним аргументом: 
        public MyClass(int a)
        {
            // Сообщение в консольном окне:
            Console.WriteLine("Конструктор с одним аргументом");
            // Значения полей:
            alpha = a;
            bravo = alpha;
            // Отображение значений полей:
            Console.WriteLine("Оба поля равны " + alpha);
        }

        // Конструктор с двумя аргументами: 
        public MyClass(int a, int b)
            : this(a)
        {
            // Сообщение в консольном окне:
            Console.WriteLine("Конструктор с двумя аргументами");
            // Значение второго поля: 
            bravo = b;
            // Отображение значений полей:
            Console.WriteLine("Поля " + alpha + " и " + bravo);
        }

        // Конструктор без аргументов: 
        public MyClass()
            : this(400, 500)
        {
            // Сообщение в консольном окне:
            Console.WriteLine("Конструктор без аргументов");
            // Отображение значений полей:
            Console.WriteLine("Значения " + alpha + " и " + bravo);
        }
    }

    // Класс с главным методом:
    class Program
    {
        static void Main()
        {
            // Вызов конструктора с одним аргументом:
            MyClass A = new MyClass(100);
            Console.WriteLine();
            // Вызов конструктора с двумя аргументами:
            MyClass B = new MyClass(200, 300);
            Console.WriteLine();
            // Вызов конструктора без аргументов:
            MyClass C = new MyClass();
            // Задержка:
            Console.ReadLine();
        }
    }
}
Архив проекта можно взять здесь.

    Ниже показано, как выглядит результат выполнения программы.


Рис.1. Результат выполнения программы

    В примере описан класс MyClass с двумя целочисленными полями alpha и bravo. Кроме них в классе есть три версии конструктора: с одним аргументом, с двумя аргументами и без аргументов. Конструктор с одним аргументом простой: появляется сообщение о том, что у конструктора один аргумент, обоим полям присваиваются одинаковые значения (определяется аргументом конструктора), и присвоенное значение отображается в консольном окне. Команда

  MyClass A = new MyClass(100);
в главном методе программы дает пример использования этого конструктора.

    Конструктор с двумя аргументами описан так, что сначала вызывается версия конструктора с одним аргументом (первый из двух аргументов, переданных конструктору с двумя аргументами), а затем появляется сообщение о том, что вызван конструктор с двумя аргументами, второму полю присваивается новое значение, и конечные значения полей отображаются в консольном окне. Пример использования конструктора с двумя аргументам и дается командой

  MyClass B = new MyClass(200, 300); 
в главном методе программы.

    Наконец, конструктор без аргументов описан так, что сначала выполняется код конструктора с двумя аргументами 300 и 400. Выполнение этого конструктора, как мы уже знаем, начинается с выполнения кода конструктора с одним аргументом. И только в самом конце выполняются команды, непосредственно описанные в теле конструктора без аргументов. Конструктор без аргументов используется при создании объекта командой

  MyClass C = new MyClass();
в главном методе программы.

    На следующем шаге мы резюмируем все ранее сказанное по данной теме на предыдущих шагах.




Предыдущий шаг Содержание Следующий шаг