W tej lekcji będziemy mogli zapoznać się ze strukturami, słyszałeś już o nich podczas tematu o konwersji stringów. Jak wiemy struktura jest typem wartości (typ bezpośredni) a nie jak klasa typem referencji. Ale ogólnie struktura i klasa są do siebie bardzo podobne. W strukturze definiujemy takie same składniki jak w klasie, czyli własności, zmienne składowe, metody, indeksery i inne. Co tak naprawdę dają nam struktury i poco nam one? A więc często mamy potrzebę utworzenia klasy dla małych obiektów które to tylko posiadają jakieś tam wartości, np. klasa punkt zawiera tylko zmienne składowe x i y, i to tyle żadnych metod, nie potrzebne nam referencyjny typ jak na przykład w przypadku naszej klasy Figury, gdzie dzięki właśnie za pomocą referencji w czasie rzeczywistym dokonywaliśmy wyboru jaka figura ma być wybrana i odpowiednia metoda. OK. to zaczniemy może od ogólnej deklaracji struktury:
struct nazwa_struktury : interfejsy
{
…
}
Warto pamiętać o tym, że struktura może implementować kilka interfejsów. Napiszmy teraz program który to będzie zawierał strukturę o nazwie Punkt:
Początek kodu:
using System;
struct Punkt
{
public int x;
public int y;
public Punkt(int x, int y)
{
this.x = x;
this.y = y;
}
}
class Pokaz
{
public static void Main()
{
Punkt a = new Punkt(10, 2);
Punkt b = new Punkt(-4, 3);
Console.WriteLine(„Punkt ‘a’ ma wartości: x = {0}, y = {1}”, a.x, a.y);
Console.WriteLine(„Punkt ‘b’ ma wartości: x = {0}, y = {1}”, b.x, b.y);
a = b;
b.x = 33;
b.y = -125;
Console.WriteLine(„\nZamiana”);
Console.WriteLine(„Punkt ‘a’ ma wartości: x = {0}, y = {1}”, a.x, a.y);
Console.WriteLine(„Punkt ‘b’ ma wartości: x = {0}, y = {1}”, b.x, b.y);
}
}
Koniec kodu:
Każda ze struktur ma zdefiniowany własny konstruktor bez parametrów, jak pamiętasz w klasach trzeba było taki tworzyć. W następującej linijce:
a = b;
b.x = 33;
b.y = -125;
widać od razu że nie jest to typ referencji jak klasa, gdyż jeżeli był by to typ referencji to powinno być widać zmiany dokonane na obiekcie ‘b’ w obiekcie ‘a’. Ale nie widać, gdyż jest to typ wartości. I tak kończymy tą lekcję o strukturach. Struktury są przy małych i prostych obiektach o wiele wydajniejsze od klas, warto o tym pamiętać w naszych programach.