Jak działa new?

Operator new w języku C# pełni kilka kluczowych ról, ale jego podstawowym zastosowaniem jest tworzenie instancji obiektów, czyli alokowanie pamięci dla nowych obiektów i wywoływanie konstruktorów klas. Użycie operatora new pozwala na inicjalizację nowego obiektu i jest fundamentalnym elementem programowania zorientowanego obiektowo w C#.
Jak działa new?
Gdy używamy operatora new wraz z nazwą klasy, C# alokuje pamięć na stercie dla nowego obiektu tej klasy i wywołuje konstruktor klasy, aby zainicjalizować nowy obiekt. Konstruktor to specjalna metoda klasy, która może przyjmować argumenty i jest używana do ustawiania początkowych wartości obiektu.
Deklaracja i Użycie
Przykład 1: Tworzenie Instancji Klasy
Rozważmy prostą klasę Samochod:
class Samochod
{
    public string Marka;
    public Samochod(string marka)
    {
        Marka = marka;
    }
}
Tworzenie instancji tej klasy z użyciem new:
Samochod mojSamochod = new Samochod("Toyota");
Console.WriteLine(mojSamochod.Marka); // Wyświetli "Toyota"
W tym przykładzie, operator new alokuje pamięć dla obiektu Samochod i wywołuje jego konstruktor, przekazując „Toyota” jako argument, co inicjalizuje pole Marka nowego obiektu.
Przykład 2: Tworzenie Tablic
Operator new jest również używany do tworzenia tablic:
int[] liczby = new int[5];
Ta instrukcja tworzy nową tablicę typu int o rozmiarze 5. Każdy element tablicy jest automatycznie zainicjalizowany domyślną wartością dla typu, w tym przypadku 0 dla int.
Użycie new do Ukrywania Członków w Dziedziczeniu
Operator new może być także używany w definicjach klas do ukrywania członków dziedziczonych z klasy bazowej, które nie są wirtualne. Jest to zaawansowane zastosowanie, które pozwala na zmianę zachowania dziedziczonych metod lub właściwości w klasie pochodnej:
class Bazowa
{
    public void Pokaz()
    {
        Console.WriteLine("Bazowa::Pokaz");
    }
}

class Pochodna : Bazowa
{
    public new void Pokaz()
    {
        Console.WriteLine("Pochodna::Pokaz");
    }
}
W tym przypadku, metoda Pokaz w klasie Pochodna ukrywa oryginalną metodę Pokaz z klasy Bazowa. Kiedy użyjemy obiektu Pochodna, zostanie wywołana metoda Pokaz z klasy Pochodna.
Podsumowanie
Operator new w C# jest niezwykle ważny i używany w różnych kontekstach. Jego główną rolą jest tworzenie nowych instancji obiektów i tablic, ale ma również inne zastosowania, takie jak ukrywanie członków w hierarchii klas. Poprawne użycie new jest kluczowe dla efektywnego programowania zorientowanego obiektowo w C#.