Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 123
- Предыдущая
- 123/642
- Следующая
Изменить размер шрифта:
123
class Car{ // Автоматические свойства! public string PetName { get; set; } public int Speed { get; set; } public string Color { get; set; } public void DisplayStats() { Console.WriteLine("Car Name: {0}", PetName); Console.WriteLine("Speed: {0}", Speed); Console.WriteLine("Color: {0}", Color); }}При использовании экземпляра класса, определенного с автоматическими свойствами, присваивать и получать значения можно с помощью вполне ожидаемого синтаксиса свойств:
using System;using AutoProps;Console.WriteLine("***** Fun with Automatic Properties *****\n");Car c = new Car();c.PetName = "Frank";c.Speed = 55;c.Color = "Red";Console.WriteLine("Your car is named {0}? That's odd...", c.PetName);c.DisplayStats();Console.ReadLine();Автоматические свойства и стандартные значения
Когда автоматические свойства применяются для инкапсуляции числовых и булевских данных, их можно использовать прямо внутри кодовой базы, т.к. скрытым поддерживающим полям будут присваиваться безопасные стандартные значения (
false0nullДобавьте к текущему проекту новый файл класса по имени
GarageCarnamespace AutoProps{ class Garage { // Скрытое поддерживающее поле int установлено в О! public int NumberOfCars { get; set; } // Скрытое поддерживающее поле Car установлено в null! public Car MyAuto { get; set; } }}Имея стандартные значения C# для полей данных, значение
NumberOfCars0MyAutonullCarGarage g = new Garage();// Нормально, выводится стандартное значение 0.Console.WriteLine("Number of Cars: {0}", g.NumberOfCars);// Ошибка во время выполнения!// Поддерживающее поле в данный момент равно null!Console.WriteLine(g.MyAuto.PetName);Console.ReadLine();Чтобы решить проблему, можно модифицировать конструкторы класса, обеспечив безопасное создание объекта. Ниже показан пример:
class Garage{ // Скрытое поддерживающее поле установлено в 0! public int NumberOfCars { get; set; } // Скрытое поддерживающее поле установлено в null! public Car MyAuto { get; set; } // Для переопределения стандартных значений, присвоенных скрытым // поддерживающим полям, должны использоваться конструкторы. public Garage() { MyAuto = new Car(); NumberOfCars = 1; } public Garage(Car car, int number) { MyAuto = car; NumberOfCars = number; }}После такого изменения объект
CarGarageConsole.WriteLine("***** Fun with Automatic Properties *****\n");// Создать объект автомобиля.Car c = new Car();c.PetName = "Frank";c.Speed = 55;c.Color = "Red";c.DisplayStats();// Поместить автомобиль в гараж.Garage g = new Garage();g.MyAuto = c;// Вывести количество автомобилей в гараже
123
- Предыдущая
- 123/642
- Следующая
Перейти на страницу:
