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
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام