0Pricing
C# Academy · Lekcja

Konstruktory główne w klasach

Deklaruj parametry konstruktora w nagłówku typu.

Konstruktory główne w klasach to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 4 lekcji w sumie.

Czym jest konstruktor podstawowy?

Konstruktor podstawowy umożliwia zadeklarowanie parametrów konstruktora bezpośrednio w nagłówku klasy, na przykład class Point(int x, int y). Parametry są dostępne w całym ciele klasy.

using System;

class Point(int x, int y) {
    public int X => x;
    public int Y => y;
}

var p = new Point(3, 4);
Console.WriteLine(p.X + "," + p.Y); // 3,4

Koniec z kodem powtarzalnym

Przed wprowadzeniem konstruktorów podstawowych trzeba było pisać ciało konstruktora tylko po to, aby skopiować parametry do pól. Teraz nagłówek deklaruje parametry, do których można odwoływać się bezpośrednio.

using System;

class Greeter(string name) {
    public string Greet() => "Hello, " + name + "!";
}

Console.WriteLine(new Greeter("Ada").Greet()); // Hello, Ada!

Parametry są dostępne wszędzie

Parametrów konstruktora podstawowego można używać w inicjalizatorach właściwości, treściach metod i inicjalizatorach pól w dowolnym miejscu klasy.

using System;

class Circle(double radius) {
    public double Area => Math.PI * radius * radius;
    public double Circumference => 2 * Math.PI * radius;
}

var c = new Circle(2);
Console.WriteLine(Math.Round(c.Area, 2)); // 12.57

Inicjowanie pól i właściwości

Parametru konstruktora podstawowego można użyć do zainicjowania pola lub właściwości w miejscu deklaracji.

using System;

class Account(decimal initial) {
    public decimal Balance { get; private set; } = initial;
    public void Deposit(decimal amount) => Balance += amount;
}

var a = new Account(100m);
a.Deposit(50m);
Console.WriteLine(a.Balance); // 150

Walidacja w nagłówku

Parametry konstruktora podstawowego można walidować bezpośrednio, używając wyrażeń throw podczas przypisywania do pola.

using System;

class Person(string name) {
    public string Name { get; } =
        string.IsNullOrWhiteSpace(name)
            ? throw new ArgumentException("name required")
            : name;
}

Console.WriteLine(new Person("Lin").Name); // Lin

Dodawanie dodatkowych konstruktorów

Klasa z konstruktorem podstawowym może nadal deklarować dodatkowe konstruktory, ale muszą one wywoływać konstruktor podstawowy za pomocą : this(...).

using System;

class Box(int width, int height) {
    public int Width => width;
    public int Height => height;
    public Box(int size) : this(size, size) { }
}

var sq = new Box(5);
Console.WriteLine(sq.Width + "x" + sq.Height); // 5x5

Ciała konstruktorów podstawowych

Konstruktory podstawowe nie mają własnego ciała. Logika, która musi zostać wykonana podczas tworzenia obiektu, trafia do inicjalizatorów pól lub do zwykłego konstruktora wywołującego konstruktor podstawowy.

using System;

class Logger(string prefix) {
    private readonly string tag = "[" + prefix + "]";
    public void Log(string msg) => Console.WriteLine(tag + " " + msg);
}

new Logger("INFO").Log("started"); // [INFO] started

Nie są automatycznie publicznymi właściwościami

W przeciwieństwie do rekordów konstruktor podstawowy zwykłej klasy nie tworzy publicznych właściwości. Parametry są prywatne dla klasy, chyba że zostaną przez Państwa jawnie udostępnione.

using System;

class Temp(double celsius) {
    // celsius is NOT a public property here
    public double Fahrenheit => celsius * 9 / 5 + 32;
}

Console.WriteLine(new Temp(100).Fahrenheit); // 212

Przechwycone parametry stają się polami

Gdy parametr konstruktora podstawowego jest używany w metodzie (a nie tylko w inicjalizatorze), kompilator przechwytuje go w ukrytym polu, aby zachować go po utworzeniu obiektu.

using System;

class Counter(int start) {
    private int value = start;
    public int Next() => value++;
}

var c = new Counter(10);
Console.WriteLine(c.Next()); // 10
Console.WriteLine(c.Next()); // 11

Prostsze wstrzykiwanie zależności

Konstruktory podstawowe są często używane w DI: usługi deklaruje się w nagłówku i korzysta z nich w metodach, bez ręcznego przypisywania do pól.

using System;

interface IClock { string Now(); }
class FakeClock : IClock { public string Now() => "12:00"; }

class Service(IClock clock) {
    public string Report() => "Time is " + clock.Now();
}

Console.WriteLine(new Service(new FakeClock()).Report()); // Time is 12:00

Zastosowanie w praktyce

Ta klasa używa konstruktora podstawowego do przekazania zależności i udostępnia obliczaną właściwość, bez jawnego ciała konstruktora.

using System;

class Rectangle(double w, double h) {
    public double Area => w * h;
    public double Perimeter => 2 * (w + h);
}

var r = new Rectangle(3, 4);
Console.WriteLine(r.Area + " " + r.Perimeter); // 12 14

Szybkie sprawdzenie

Sprawdź swoją znajomość konstruktorów podstawowych w klasach.

Podsumowanie

Poznałeś konstruktory podstawowe w klasach.

  • class C(int x) deklaruje parametry konstruktora w nagłówku.
  • Parametry są dostępne w całym ciele klasy.
  • Dodatkowe konstruktory wywołują konstruktor podstawowy za pomocą : this(...).
  • W zwykłej klasie parametry te nie stają się automatycznie publicznymi właściwościami.

Często zadawane pytania

Czy lekcja „Konstruktory główne w klasach” jest bezpłatna?

Tak — pełny tekst „Konstruktory główne w klasach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Konstruktory główne w klasach”?

Deklaruj parametry konstruktora w nagłówku typu. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Konstruktory główne w klasach”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Konstruktory główne w klasach
  2. Przechwytywanie parametrów w elementach składowych
  3. Konstruktory główne w strukturach
  4. Łączenie z właściwościami i typami bazowymi
← Powrót do C# Academy