Иди на текст

Структуре

У програмском језику C структурама си дефинисао скуп података сложеног типа, тј. скуп података који се састоји од одређеног броја елемената који могу бити различитих типова. Структурним типом или типом структуре у програмском језику C# дефинише се вредносни тип који може да обухвати и податке и њихову сродну функционалност! За дефинисање структура у програмском језику C# такође се користи кључна реч struct.

На пример, тачку у координатном систему која има координате X и Y можеш дефинисати структурним типом на следећи начин:

public struct Tacka
{
    public int X { get; set; }
    public int Y { get; set; }

    public Tacka(int x, int y)
    {
        X = x;
        Y = y;
    }

    public void Prikazi()
    {
        Console.WriteLine("Koordinata X: " + X + "\r\nKoordinata Y: " + Y);
    }
}

У овом примеру, Tacka је структура са два својства X и Y, једним конструктором и једном методом Display. Инстанцирање структуре и коришћење њених својстава и метода може да изгледа овако:

class Program
{
    static void Main()
    {
        Tacka t1 = new Tacka(10, 20);
        t1.Prikazi();
    }
}

Структурни типови имају семантику вредности. То значи да променљива структурног типа садржи инстанцу тог типа, односно директне вредности својих података, а не референце на те податке. Вредности променљивих се копирају приликом додељивања, прослеђивања аргумената методи и враћања резултата методе. За променљиве структурног типа, копира се инстанца тог типа.

Структурни тип треба да користиш када радиш са "малим" сложеним типовима који су фокусирани на податке са мало или нимало понашања. Сâм .NET користи структурне типове за представљање бројева (целобројних и реалних), буловских вредности, уникод карактера итд. Ако је фокус на понашању, а не на подацима, онда су класе бољи избор од структура. Класни тип има семантику референци. То значи да променљива класног типа садржи референцу на инстанцу тог типа, а не саму инстанцу. Класама ће бити посвећено цело следеће поглавље.

Структурни типови обично се складиште на стеку (енгл. stack), док се референтни типови складиште на хипу (енгл. heap).