Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю - Страница 107
- Предыдущая
- 107/642
- Следующая
public Car(string pn, int cs, out bool inDanger){ petName = pn; currSpeed = cs; if (cs > 100) { inDanger = true; } else { inDanger = false; }}Как обычно, должны соблюдаться все правила, касающиеся параметров
outinDangerЕще раз о стандартном конструкторе
Как вы только что узнали, все классы снабжаются стандартным конструктором. Добавьте в свой проект новый файл по имени
Motorcycle.csMotorcycleusing System;namespace SimpleClassExample{ class Motorcycle { public void PopAWheely() { Console.WriteLine("Yeeeeeee Haaaaaeewww!"); } }}Теперь появилась возможность создания экземпляров
MotorcycleConsole.WriteLine("***** Fun with Class Types *****\n");Motorcycle mc = new Motorcycle();mc.PopAWheely();...Тем не менее, как только определен специальный конструктор с любым числом параметров, стандартный конструктор молча удаляется из класса и перестает быть доступным. Воспринимайте это так: если вы не определили специальный конструктор, тогда компилятор C# снабжает класс стандартным конструктором, давая возможность пользователю размещать в памяти экземпляр вашего класса с набором полей данных, которые установлены в корректные стандартные значения. Однако когда вы определяете уникальный конструктор, то компилятор предполагает, что вы решили взять власть в свои руки.
Следовательно, если вы хотите позволить пользователю создавать экземпляр вашего типа с помощью стандартного конструктора, а также специального конструктора, то должны явно переопределить стандартный конструктор. Важно понимать, что в подавляющем большинстве случаев реализация стандартного конструктора класса намеренно оставляется пустой, т.к. требуется только создание объекта со стандартными значениями. Обновите класс
Motorcycleclass Motorcycle{ public int driverIntensity; public void PopAWheely() { for (int i = 0; i <= driverIntensity; i++) { Console.WriteLine("Yeeeeeee Haaaaaeewww!"); } } // Вернуть стандартный конструктор, который будет. // устанавливать все члены данных в стандартные значения public Motorcycle() {} // Специальный конструктор. public Motorcycle(int intensity) { driverIntensity = intensity; }}На заметку! Теперь, когда вы лучше понимаете роль конструкторов класса, полезно узнать об одном удобном сокращении. В Visual Studio и Visual Studio Code предлагается фрагмент кода
ctorctorРоль ключевого слова this
В языке C# имеется ключевое слово
thisthisMotorcyclestringnameSetDriverName()class Motorcycle{ public int driverIntensity; // Новые члены для представления имени водителя. public string name; public void SetDriverName(string name) => name = name;...}Хотя приведенный код нормально скомпилируется, компилятор C# выдаст сообщение с предупреждением о том, что переменная присваивается сама себе! В целях иллюстрации добавьте в свой код вызов метода
SetDriverName()// Создать объект Motorcycle с мотоциклистом по имени Tiny?Motorcycle c = new Motorcycle(5);- Предыдущая
- 107/642
- Следующая
