Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Освоение перегрузки конструкторов в C#

Перегрузка конструкторов в C#: полное руководство

Узнайте, как создавать гибкие классы в C# с помощью перегрузки конструкторов — изменения количества, типов и порядка параметров — с практическими примерами.

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

Прежде чем изучать перегрузку, убедитесь, что вы понимаете основы конструкторов в C#.


1. Различное количество параметров

Конструктор можно перегрузить, предоставляя разное число аргументов.

class Car {
    // Конструктор без параметров
    Car() { ... }
    // Конструктор с одним параметром
    Car(string brand) { ... }
    // Конструктор с двумя параметрами
    Car(string brand, int price) { ... }
}

В этом классе Car три конструктора сосуществуют, так как у каждого уникальная сигнатура. Компилятор выбирает соответствующий конструктор во время выполнения на основе количества аргументов.

Пример: перегрузка по количеству параметров

using System;
namespace ConstructorOverload {
    class Car {
        // Конструктор без параметров
        Car() {
            Console.WriteLine("Конструктор Car");
        }
        // Конструктор с одним параметром
        Car(string brand) {
            Console.WriteLine("Конструктор Car с одним параметром");
            Console.WriteLine("Марка: " + brand);
        }
        static void Main(string[] args) {
            // Вызывает конструктор без параметров
            Car car = new Car();
            Console.WriteLine();
            // Вызывает конструктор с одним параметром
            Car car2 = new Car("Bugatti");
            Console.ReadLine();
        }
    }
}

Результат

Конструктор Car
Конструктор Car с одним параметром
Марка: Bugatti

Компилятор вызывает соответствующий конструктор на основе предоставленных аргументов.


2. Различные типы параметров

Конструкторы также можно перегружать, когда они принимают одинаковое количество параметров, но разных типов.

class Car {
    Car(string brand) { ... }
    Car(int price) { ... }
}

Здесь оба конструктора принимают один аргумент, но типы — string и int — различают их.

Пример: перегрузка по типу параметра

using System;
namespace ConstructorOverload {
    class Car {
        // Конструктор со строкой
        Car(string brand) {
            Console.WriteLine("Марка: " + brand);
        }
        // Конструктор с int
        Car(int price) {
            Console.WriteLine("Цена: " + price);
        }
        static void Main(string[] args) {
            Car car = new Car("Lamborghini");
            Console.WriteLine();
            Car car2 = new Car(50000);
            Console.ReadLine();
        }
    }
}

Результат

Марка: Lamborghini
Цена: 50000

3. Изменение порядка параметров

Когда конструкторы имеют одинаковое количество и типы параметров, их всё ещё можно перегрузить, изменив порядок.

class Car {
    Car(string brand, int price) { ... }
    Car(int speed, string color) { ... }
}

Сигнатуры отличаются, потому что последовательность типов различна.

Пример: перегрузка по порядку параметров

using System;
namespace ConstructorOverload {
    class Car {
        // Сначала string, потом int
        Car(string brand, int price) {
            Console.WriteLine("Марка: " + brand);
            Console.WriteLine("Цена: " + price);
        }
        // Сначала int, потом string
        Car(int speed, string color) {
            Console.WriteLine("Скорость: " + speed + " км/ч");
            Console.WriteLine("Цвет: " + color);
        }
        static void Main(string[] args) {
            Car car = new Car("Bugatti", 50000);
            Console.WriteLine();
            Car car2 = new Car(60, "Red");
            Console.ReadLine();
        }
    }
}

Результат

Марка: Bugatti
Цена: 50000
Скорость: 60 км/ч
Цвет: Red

Язык C

  1. Конструкторы в C#: виды, примеры и продвинутые паттерны
  2. Вложенные классы в C#: определение, использование и наследование
  3. Освоение перегрузки методов в C#: концепции, примеры и лучшие практики
  4. Перегрузка операторов в Python: практическое руководство
  5. Освоение конструкторов Java: типы, использование и практические примеры
  6. Конструкторы в Java Enums: объяснение с практическим примером
  7. Охлаждающая жидкость двигателя: назначение, виды и обслуживание
  8. Перегрузка операторов в C++: практическое руководство с примерами кода
  9. Перегрузка конструкторов в Java — Объяснение с практическими примерами кода
  10. Конструкторы в Java: инициализация и лучшие практики