CodeGym /Kurslar /C# SELF /C#-da strukturlar

C#-da strukturlar

C# SELF
Səviyyə, Dərs
Mövcuddur

1. Giriş

Struktur — bu, C#-da xüsusi data tipidir ki, bir neçə dəyəri (hətta fərqli tipləri) bir “qutuya” yığmağa imkan verir. Bu, sanki balaca LEGO konstruktordur: detallar yığırsan, nəticədə rahat, kompakt obyekt alırsan.

Strukturlar class-lara bənzəyir, amma onların özəllikləri var və daha “sadə” hallarda istifadə olunur, yəni class-ların bütün “gücünə” və “ağırlığına” ehtiyac olmayanda.

Sintaksis


struct Point
{
    public int X;
    public int Y;
}
Point strukturunun elan olunması

Bu nümunədə biz müstəvidə nöqtə üçün struktur təsvir etdik, koordinatları X və Y ilə.

Strukturlar harada istifadə olunur?

Ən çox strukturlar kiçik, sadə obyektlər üçün istifadə olunur, hansılar ki, çox yüngül və “sadəcə data” olmalıdır.

C#-da bəzi standart tiplər — strukturlardır:

  • int, double, bool, DateTime, TimeSpan, decimal, Guid
  • və hətta, məsələn, ConsoleKeyInfo və ya Point (qrafik kitabxanalarda)

Strukturla class-ın fərqləri

Kriteriya Struktur Class
Açar söz
struct
class
Saxlama tipi Value Type Reference Type
Harada saxlanılır Stack-də (yaddaş sahəsi) Heap-də (yaddaş sahəsi)
Metoda ötürülmə Dəyər üzrə (kopya) Referans üzrə
İrsi əlaqə Yox (yalnız interface-lər) Bəli
null ola bilər? Yox (yalnız Nullable) Bəli
Default olaraq Bütün field-lar avtomatik sıfırla başlanır Yalnız konstruktor vasitəsilə

2. Strukturların elan olunması və istifadəsi

Struktur həm class daxilində, həm də xaricində elan oluna bilər:


struct Rectangle
{
    public int Width;
    public int Height;
}

Yaratmaq və istifadə etmək:

Rectangle r;
r.Width = 10;
r.Height = 5;
Console.WriteLine($"Sahə: {r.Width * r.Height}");

Konstruktor da istifadə etmək olar:

struct Point
{
    public int X;
    public int Y;

    // Konstruktor
    public Point(int x, int y)
    {
        X = x;
        Y = y;
    }
}

var p = new Point(3, 7);
Console.WriteLine($"Nöqtə: ({p.X}, {p.Y})");

Strukturdan nə vaxt istifadə etmək daha yaxşıdır?

  • Kiçik “data topluları” üçün (məsələn, koordinat, rəng, interval, tarix və vaxt).
  • Kompaktlıq və performans vacibdirsə (məsələn, massivdə milyonlarla nöqtə).
  • Obyekt vahid dəyər kimi davranmalıdırsa (copy-paste — həqiqətən kopya işləyir!).

Struktur istifadə etməyə dəyməz, əgər obyekt:

  • Böyük ola bilərsə (çoxlu field-lar).
  • İrsi əlaqədə iştirak etməlidirsə.
  • Tez-tez referans üzrə dəyişməlidirsə.

3. Strukturların xüsusiyyətləri və “tələlər”

Kopyalama

Point p1 = new Point(1, 2);
Point p2 = p1; // KOPYA yaradılır!
p2.X = 100;

Console.WriteLine(p1.X); // 1 — dəyişməyib!
Console.WriteLine(p2.X); // 100
Strukturun kopyalanması müstəqil kopya yaradır

Avtomatik default dəyərlər

Point p; // X və Y field-ları = 0, hətta açıq şəkildə təyin etməsən də!

Nullable ola bilər

null saxlamaq üçün xüsusi nullable-sintaksis istifadə etmək lazımdır — tip adından sonra sual işarəsi qoyursan. Onda dəyişənə null vermək olar.

Point? p = null;
if (p == null)
    Console.WriteLine("Nöqtə yoxdur");

4. Avtomatik property və metodlu strukturlar

Strukturlar metodlar, property-lər, event-lər və hətta static üzvlər də saxlaya bilər.

public struct Range
{
    public int Start { get; set; }
    public int End { get; set; }

    public int Length => End - Start;

    public override string ToString() => $"[{Start}..{End}]";
}

Nümunə: kompleks ədədlər üçün struktur

Kompakt ədədlər üçün struktur, metodu və ToString() override-u ilə


        struct Complex
{
    public double Re;
    public double Im;

    public Complex(double re, double im)
    {
        Re = re;
        Im = im;
    }

    public double Abs() => Math.Sqrt(Re * Re + Im * Im);

    public override string ToString() => $"{Re} + {Im}i";
}

var z = new Complex(1, 2);
Console.WriteLine(z);          // 1 + 2i
Console.WriteLine(z.Abs());    // 2.236...
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Nöqtənin koordinatlarını saxlamaq üçün sadə strukturun yaradılması
Nöqtənin koordinatlarını saxlamaq üçün sadə strukturun yaradılması
2
Tapşırıq
C# SELF, səviyyə, dərs
Bağlanıb
Konstruktor və sahə hesablayan metodu olan struktur
Konstruktor və sahə hesablayan metodu olan struktur
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION