Kniga-Online.club
» » » » Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Читать бесплатно Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю. Жанр: Базы данных год 2004. Так же читаем полные версии (весь текст) онлайн без регистрации и SMS на сайте kniga-online.club или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Перейти на страницу:

К счастью, язык C# поддерживает использование конструкторов, которые позволяют устанавливать состояние объекта в момент его создания. Конструктор — это специальный метод класса, который неявно вызывается при создании объекта с применением ключевого слова new. Однако в отличие от "нормального" метода конструктор никогда не имеет возвращаемого значения (даже void) и всегда именуется идентично имени класса, объекты которого он конструирует.

Роль стандартного конструктора

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

Если вас не устраивают такие стандартные присваивания, тогда можете переопределить стандартный конструктор в соответствии со своими нуждами. В целях иллюстрации модифицируем класс C# следующим образом:

class Car

{

  // 'Состояние' объекта Car.

  public string petName;

  public int currSpeed;

  // Специальный стандартный конструктор.

  public Car()

  {

    petName = "Chuck";

    currSpeed = 10;

...

}

В данном случае мы заставляем объекты Car начинать свое существование под именем Chuck и со скоростью 10 миль в час. Создать объект Car со стандартными значениями можно так:

Console.WriteLine("***** Fun with Class Types *****n");

// Вызов стандартного конструктора.

Car chuck = new Car();

// Выводит строку "Chuck is going 10 MPH."

chuck.PrintState();

...

Определение специальных конструкторов

Обычно помимо стандартного конструктора в классах определяются дополнительные конструкторы. Тем самым пользователю объекта предоставляется простой и согласованный способ инициализации состояния объекта прямо во время его создания. Взгляните на следующее изменение класса Car, который теперь поддерживает в совокупности три конструктора:

class Car

{

  // 'Состояние' объекта Car.

  public string petName;

  public int currSpeed;

  // Специальный стандартный конструктор.

  public Car()

  {

    petName = "Chuck";

    currSpeed = 10;

  }

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  // Здесь currSpeed получает стандартное значение для типа int (0).

  public Car(string pn)

  {

    petName = pn;

  }

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  // Позволяет вызывающему коду установить полное состояние объекта Car.

  public Car(string pn, int cs)

  {

    petName = pn;

    currSpeed = cs;

  }

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

...

}

Имейте в виду, что один конструктор отличается от другого (с точки зрения компилятора С#) числом и/или типами аргументов. Вспомните из главы 4, что определение метода с тем же самым именем, но разным количеством или типами аргументов, называется перегрузкой метода. Таким образом, конструктор класса Car перегружен, чтобы предложить несколько способов создания объекта во время объявления. В любом случае теперь есть возможность создавать объекты Car, используя любой из его открытых конструкторов. Вот пример:

Console.WriteLine("***** Fun with Class Types *****n");

// Создать объект Car по имени Chuck со скоростью 10 миль в час.

Car chuck = new Car();

chuck.PrintState();

// Создать объект Car по имени Mary со скоростью 0 миль в час.

Car mary = new Car("Mary");

mary.PrintState();

// Создать объект Car по имени Daisy со скоростью 75 миль в час.

Car daisy = new Car("Daisy", 75);

daisy.PrintState();

...

Конструкторы в виде членов, сжатых до выражений (нововведение в версии 7.0)

В C# 7 появились дополнительные случаи употребления для стиля членов, сжатых до выражений. Теперь такой синтаксис применим к конструкторам, финализаторам, а также к средствам доступа get/set для свойств и индексаторов. С учетом сказанного предыдущий конструктор можно переписать следующим образом:

// Здесь currSpeed получит стандартное

// значение для типа int (0).

public Car(string pn) => petName = pn;

Второй специальный конструктор не может быть преобразован в выражение, т.к. члены, сжатые до выражений, должны быть однострочными методами.

Конструкторы с параметрами out (нововведение в версии 7.3)

 Начиная с версии C# 7.3, в конструкторах (а также в рассматриваемых позже инициализаторах полей и свойств) могут использоваться параметры out. В качестве простого примера добавьте в класс Car следующий конструктор:

Перейти на страницу:

Троелсен Эндрю читать все книги автора по порядку

Троелсен Эндрю - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки kniga-online.club.


Язык программирования C#9 и платформа .NET5 отзывы

Отзывы читателей о книге Язык программирования C#9 и платформа .NET5, автор: Троелсен Эндрю. Читайте комментарии и мнения людей о произведении.


Уважаемые читатели и просто посетители нашей библиотеки! Просим Вас придерживаться определенных правил при комментировании литературных произведений.

  • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
  • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
  • 3. Просьба отказаться от нецензурной лексики.
  • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

Надеемся на Ваше понимание и благоразумие. С уважением, администратор kniga-online.


Прокомментировать
Подтвердите что вы не робот:*
Подтвердите что вы не робот:*