C# – ساختارها (Structures)

ساختارها در C#

در C#، ساختار (Structure) یک نوع داده از نوع مقدار (Value Type) است. این ساختار به شما کمک می‌کند تا یک متغیر واحد را برای نگهداری داده‌های مرتبط از انواع مختلف داده‌ها استفاده کنید. برای ایجاد یک ساختار از کلمه کلیدی struct استفاده می‌شود.

ساختارها برای نمایش یک رکورد (Record) استفاده می‌شوند. به عنوان مثال، فرض کنید که می‌خواهید اطلاعات کتاب‌های خود را در یک کتابخانه دنبال کنید. ممکن است بخواهید ویژگی‌های زیر را برای هر کتاب دنبال کنید:

  • عنوان
  • نویسنده
  • موضوع
  • شناسه کتاب

تعریف یک ساختار

برای تعریف یک ساختار، باید از دستور struct استفاده کنید. دستور struct نوع داده جدیدی را تعریف می‌کند که دارای چندین عضو است.

مثال:

using System;

// تعریف ساختار
struct Books 
{
    public string title;
    public string author;
    public string subject;
    public int book_id;
}

استفاده از ساختار

در اینجا برنامه‌ای را نشان می‌دهیم که استفاده از ساختار Books را نشان می‌دهد:

مثال:

using System;

// تعریف ساختار
struct Books 
{
    public string title;
    public string author;
    public string subject;
    public int book_id;
}

public class TestStructure 
{
    public static void Main(string[] args) 
    {
        Books Book1;   // تعریف یک شیء از نوع Books
        Books Book2;   // تعریف یک شیء دیگر از نوع Books

        // مشخصات کتاب 1
        Book1.title = "C Programming";
        Book1.author = "Nuha Ali"; 
        Book1.subject = "C Programming Tutorial";
        Book1.book_id = 6495407;

        // مشخصات کتاب 2
        Book2.title = "Telecom Billing";
        Book2.author = "Zara Ali";
        Book2.subject = "Telecom Billing Tutorial";
        Book2.book_id = 6495700;

        // چاپ اطلاعات کتاب 1
        Console.WriteLine("Book 1 title : {0}", Book1.title);
        Console.WriteLine("Book 1 author : {0}", Book1.author);
        Console.WriteLine("Book 1 subject : {0}", Book1.subject);
        Console.WriteLine("Book 1 book_id : {0}", Book1.book_id);

        // چاپ اطلاعات کتاب 2
        Console.WriteLine("Book 2 title : {0}", Book2.title);
        Console.WriteLine("Book 2 author : {0}", Book2.author);
        Console.WriteLine("Book 2 subject : {0}", Book2.subject);
        Console.WriteLine("Book 2 book_id : {0}", Book2.book_id);

        Console.ReadKey();
    }
}

خروجی:

Book 1 title : C Programming

Book 1 author : Nuha Ali
Book 1 subject : C Programming Tutorial
Book 1 book_id : 6495407
Book 2 title : Telecom Billing
Book 2 author : Zara Ali
Book 2 subject : Telecom Billing Tutorial
Book 2 book_id : 6495700

ویژگی‌های ساختارهای C#

ساختارهای C# با ساختارهای سنتی در C یا C++ تفاوت‌های زیادی دارند. ویژگی‌های ساختارهای C# به شرح زیر است:

  • ساختارها می‌توانند شامل متدها، فیلدها، ایندکس‌ها، ویژگی‌ها، متدهای اپراتور و رویدادها باشند.

  • ساختارها می‌توانند سازنده‌های تعریف‌شده داشته باشند، اما نمی‌توانند سازنده‌های پیش‌فرض را تعریف کنند. سازنده پیش‌فرض به‌طور خودکار تعریف شده و نمی‌توان آن را تغییر داد.

  • ساختارها نمی‌توانند از ساختارها یا کلاس‌های دیگر ارث‌بری کنند.

  • ساختارها نمی‌توانند به‌عنوان پایه برای ساختارها یا کلاس‌های دیگر استفاده شوند.

  • یک ساختار می‌تواند یک یا چند رابط را پیاده‌سازی کند.

  • اعضای ساختار نمی‌توانند به‌عنوان انتزاعی (abstract)، مجازی (virtual)، یا محافظت‌شده (protected) مشخص شوند.

  • هنگامی که از عملگر new برای ایجاد یک شیء از ساختار استفاده می‌کنید، شیء ایجاد شده و سازنده مناسب فراخوانی می‌شود. برخلاف کلاس‌ها، ساختارها می‌توانند بدون استفاده از عملگر new نیز ایجاد شوند.

  • اگر از عملگر new استفاده نشود، فیلدها بدون مقدار باقی می‌مانند و شیء نمی‌تواند استفاده شود تا زمانی که تمام فیلدها مقداردهی شوند.

تفاوت کلاس‌ها و ساختارها

کلاس‌ها و ساختارها تفاوت‌های اساسی زیر را دارند:

  • کلاس‌ها از نوع مرجع (Reference Type) هستند، در حالی که ساختارها از نوع مقدار (Value Type) هستند.

  • ساختارها از وراثت پشتیبانی نمی‌کنند.

  • ساختارها نمی‌توانند سازنده پیش‌فرض داشته باشند.

مثال به‌روز شده

در اینجا مثال قبلی را با استفاده از متدها در ساختار Books به‌روز کرده‌ایم:

مثال:

using System;

// تعریف ساختار با متدها
struct Books 
{
    private string title;
    private string author;
    private string subject;
    private int book_id;

    public void GetValues(string t, string a, string s, int id) 
    {
        title = t;
        author = a;
        subject = s;
        book_id = id;
    }
    
    public void Display() 
    {
        Console.WriteLine("Title : {0}", title);
        Console.WriteLine("Author : {0}", author);
        Console.WriteLine("Subject : {0}", subject);
        Console.WriteLine("Book_id : {0}", book_id);
    }
}

public class TestStructure 
{
    public static void Main(string[] args) 
    {
        Books Book1 = new Books();   // تعریف یک شیء از نوع Books
        Books Book2 = new Books();   // تعریف یک شیء دیگر از نوع Books

        // مشخصات کتاب 1
        Book1.GetValues("C Programming", "Nuha Ali", "C Programming Tutorial", 6495407);

        // مشخصات کتاب 2
        Book2.GetValues("Telecom Billing", "Zara Ali", "Telecom Billing Tutorial", 6495700);

        // چاپ اطلاعات کتاب 1
        Book1.Display();

        // چاپ اطلاعات کتاب 2
        Book2.Display(); 

        Console.ReadKey();
    }
}

خروجی:

Title : C Programming

Author : Nuha Ali
Subject : C Programming Tutorial
Book_id : 6495407
Title : Telecom Billing
Author : Zara Ali
Subject : Telecom Billing Tutorial
Book_id : 6495700

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
JavaScript - کلمه کلیدی Let (Let)

JavaScript – کلمه کلیدی Let (Let)

تعریف let کلیدواژه let در ES6 (2015) معرفی شد و دارای ویژگی‌های خاصی است که آن را از var...

بیشتر بخوانید
JavaScript - متغیرها (Variables)

JavaScript – متغیرها (Variables)

متغیرها در جاوا اسکریپت متغیرها در جاوا اسکریپت به عنوان ظرف‌هایی برای ذخیره‌سازی داده‌ها استفاده می‌شوند و می‌توانند به...

بیشتر بخوانید
JavaScript - کامنت‌ها (Comments)

JavaScript – کامنت‌ها (Comments)

کامنت‌ها در جاوا اسکریپت کامنت‌ها در جاوا اسکریپت به برنامه‌نویسان این امکان را می‌دهند تا توضیحاتی را به کد...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.