Язык программирования 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;
}
}
Как обычно, должны соблюдаться все правила, касающиеся параметров
out
inDanger
Еще раз о стандартном конструкторе
Как вы только что узнали, все классы снабжаются стандартным конструктором. Добавьте в свой проект новый файл по имени
Motorcycle.cs
Motorcycle
using System;
namespace SimpleClassExample
{
class Motorcycle
{
public void PopAWheely()
{
Console.WriteLine("Yeeeeeee Haaaaaeewww!");
}
}
}
Теперь появилась возможность создания экземпляров
Motorcycle
Console.WriteLine("***** Fun with Class Types *****\n");
Motorcycle mc = new Motorcycle();
mc.PopAWheely();
...
Тем не менее, как только определен специальный конструктор с любым числом параметров, стандартный конструктор молча удаляется из класса и перестает быть доступным. Воспринимайте это так: если вы не определили специальный конструктор, тогда компилятор C# снабжает класс стандартным конструктором, давая возможность пользователю размещать в памяти экземпляр вашего класса с набором полей данных, которые установлены в корректные стандартные значения. Однако когда вы определяете уникальный конструктор, то компилятор предполагает, что вы решили взять власть в свои руки.
Следовательно, если вы хотите позволить пользователю создавать экземпляр вашего типа с помощью стандартного конструктора, а также специального конструктора, то должны явно переопределить стандартный конструктор. Важно понимать, что в подавляющем большинстве случаев реализация стандартного конструктора класса намеренно оставляется пустой, т.к. требуется только создание объекта со стандартными значениями. Обновите класс
Motorcycle
class 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 предлагается фрагмент кода
ctor
ctor
Роль ключевого слова this
В языке C# имеется ключевое слово
this
this
Motorcycle
string
name
SetDriverName()
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
- Следующая