ساختارها در زبان سی شارپ
ساختارها مشابه آرایه ها هستند با این تفاوت که در آرایه ها فقط می توانید یک نوع داده داشته باشید. یعنی همه عناصر آرایه باید از این نوع باشند. اما ساختارها اجازه می دهد تا انواع داده مختلف را در یک مجموعه قرار دهیم.
از ساختار برای نشان دادن یک رکورد استفاده می شود. فرض کنید می خواهید کتاب های خود را در یک کتابخانه نگه داری کنید. ممکن است بخواهد اطلاعات زیر را در مورد هر کتاب ذخیره کنید:
- عنوان (Title)
- نویسنده (Author)
- موضوع (Subject)
- شناسه (Book ID)
تعریف یک ساختار در سی شارپ
برای تعریف یک ساختار باید از کلمه کلیدی struct استفاده کنید. در زیر نحوه تعریف ساختار Book را مشاهده می کنید:
struct Books { public string title; public string author; public string subject; public int book_id; };
مثال زیر نحوه استفاده از ساختار را نشان می دهد:
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; /* Declare Book1 of type Book */ Books Book2; /* Declare Book2 of type Book */ /* book 1 specification */ Book1.title = "C Programming"; Book1.author = "Nuha Ali"; Book1.subject = "C Programming Tutorial"; Book1.book_id = 6495407; /* book 2 specification */ Book2.title = "Telecom Billing"; Book2.author = "Zara Ali"; Book2.subject = "Telecom Billing Tutorial"; Book2.book_id = 6495700; /* print Book1 info */ 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); /* print Book2 info */ 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#
در مثال بالا نحوه تعریف و استفاده از یک ساختار ساده به نام Books را مشاهده کردید. ساختار زبان C# بسیار متفاوت با ساختار زبان C++ و زبان C هستند. در زیر ویژگی های مربوط به ساختارها در زبان سی شارپ را مشاهده می کنید:
- ساختارها می توانند متد، فیلد، ایندکسر، خاصیت، متدهای اپراتور و رویداد داشته باشند.
- برای ساختارها می توان سازنده تعریف کرد ولی نمی توان برای آن مخرب تعریف کرد. با این حال، شما نمی توانید یک سازنده پیش فرض برای یک ساختار تعریف کنید. سازنده پیش فرض به طور خودکار تعریف می شود و نمی تواند تغییر کند.
- ساختارها نمی توانند از ساختارها و کلاس های دیگر ارث بری کنند.
- همچنین سایر کلاس ها هم نمی توانند از ساختار ارث بری کنند.
- ساختارها می توانند یک یا چند اینترفیس را پیاده سازی کنند.
- اعضای یک ساختار نمی توانند به صورت abstract ، virtual و یا protected تعریف شوند.
- برخلاف کلاس ها، بدون استفاده از عملگر new می توان از یک ساختار نمونه سازی کرد.
- اگر از عملگر new استفاده نشود، فیلدها بدون مقدار باقی می مانند و نمی توان از آن ها استفاده کرد تا زمانی که مقدار دهی شوند.
کلاس و ساختار
کلاس و ساختار دارای تفاوت های اساسی هستند:
- کلاس به صورت Reference Type می باشد ولی ساختار به صورت Value Type
- ساختارها از وراثت پشتیبانی نمی کنند
- ساختارها نمی توانند سازنده پیش فرض داشته باشند
برای درک بهتر مبحث ساختارها، مثال قبلی را به صورت زیر تغییر داده ایم:
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(); /* Declare Book1 of type Book */ Books Book2 = new Books(); /* Declare Book2 of type Book */ /* book 1 specification */ Book1.getValues("C Programming", "Nuha Ali", "C Programming Tutorial",6495407); /* book 2 specification */ Book2.getValues("Telecom Billing", "Zara Ali", "Telecom Billing Tutorial", 6495700); /* print Book1 info */ Book1.display(); /* print Book2 info */ 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
نوشته ساختارها در زبان سی شارپ – آموزش زبان سی شارپ اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.