Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа теория передел.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
447.59 Кб
Скачать

14. Конструкторы и деструкторы

Конструктор

    • вызывается автоматически при создании экземпляра класса

    • У конструктора такое же имя, как и у его класса, а с точки зрения синтаксиса он подобен методу.

    • Конструктор инициализирует объект при его создании.

    • Метод с именем класса (например, Point()).

class Motorcycle

{ public int driverIntensity;

public string driverName;

public Motorcycle() { }

// Избыточная логика конструкторов!

public Motorcycle(int intensity)

{ if (intensity > 10)

{ intensity = 10; }

driverIntensity = intensity;

}

public Motorcycle(int intensity, string name)

{

if (intensity > 10)

{ intensity = 10; }

driverIntensity = intensity;

driverName = name;

}

...

}

  • Деструктор

    • Метод с тильдой и названием класса (~Point())

    • Активно не используется, так как при автоматической сборке мусора неизвестно когда будет вызываться.

Деструктор используется для освобождения неуправляемых ресурсов:

// Override System.Object.Finalize() via finalizer syntax.

class MyResourceWrapper

{

~MyResourceWrapper()

{

// Clean up unmanaged resources here.

// Beep when destroyed (testing purposes only!)

Console.Beep();

}

}

Конструктор по умолчанию

Конструктор класса без параметров называется конструктором по умолчанию (default constructor)

Конструктор по умолчанию без операторов автоматически создается компилятором в классе (если нет никакого другого конструктора).

Например:

class Student

{ String Name;

int course; }

...

// используем автоматически созданный конструктор

Student st = new Student();

Если в классе описан хотя бы один конструктор, то конструктор по умолчанию автоматически не создается.

class Student

{

String Name;

int course;

public Student(string nm, int crs) {Name=nm; Course=crs;}

}

...

// используем автоматически созданный конструктор, а его уже нет!!!

Student st = new Student(); // ошибка!

15. Структуры и перечисления

Структуры

Структуры и классы очень похожи. Структуры могут реализовывать интерфейсы и включать в свой состав тоже что и классы. Но есть и серьезные отличия. Структуры больше подходят для использования по значению, нежели по указателю. Наследования для структур не поддерживается. Значения структур хранятся в стеке

struct STUDENT

{

public string fio;

public string FormOfEducation;

public int course;

public string faculty;

public STUDENT (string name)

{

this.fio = name;

this.FormOfEducation = "Неопределено";

this.course = 0;

this.faculty = "Неопределено";

}

}

static void Main(string[] args)

{

STUDENT stud = new STUDENT("Нгуен Павел Зунгович");

print(stud);

Console.Read();

}

Перечисления

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

enum Color {

Red,

Blue,

Green

}

class Shape

{

public void Fill(Color color) {

switch(color) {

case Color.Red:

...

break;

case Color.Blue:

...

break;

case Color.Green:

...

break;

default:

break;

}

}

}

демонстрирует перечисление Color и метод его использующий. Использование перечислений делает код более читабельным.