(برنامه نویسی سی شارپ ) کار با Structs( ساختارها) در زبان #C (مهندسی برق _ الکترونیک)

پژوهشگر و نویسنده:  (  افشین رشید )

نکته: ساختارها یا Structs یک جایگزین سبک حجم (weight light ) برای کلاس ها Class در زبان #C هستند.  نمونه های ساخته شده از یک کلاس Class instances (بر روی حافظه)در یک ساختار درختی یا heap قرار می گیرند.

در حالی که نمونه های ساخته شده از یک Structs به صورت Stack ذخیره می شوند. علاوه بر این، در ساختار Struct بر عکس Class ها، با مرجع یا refrence به یک struct کار نمی کنید، بلکه مستقیما به نمونه ساخته شده از structs دسترسی دارید. این همچنین به این معنی است که وقتی شما یک struct را به عنوان پارامتر به تابع پاس می دهید، به صورت value by call فرستاده می شود نه by callrefrence  زمانی که می خواهید دیتا ساده تری را نشان دهید، بهتر از ساختار Struct استفاده، مخصوصا در مواقعی که می خواهید نسخه های زیادی از آن ها را مقدار دهی کنید. که مایکروسافت از ساختار struct به جای کلاس ها استفاده کرده، مثل اشیای Point ،Rectangle و یا struct Color. میباشد.

private string color = "Blue";

اگر یک تابع سازنده یا Constructor را برای struct تعیین کنید، بایستی کلیه فیلدها قبل از خروج از Constructor مقدار دهی شوند. خود ساختار struct دارای یک تابع سازنده یا Constructor default می باشد، اما اگر به صورت دستی بخواهید تابع سازنده آن را تعیین کنید، بایستی تمامی فیلدها را در تعریف تابع سازنده، مقدار دهی کنید. از طرف دیگر این بدین معناست که شما نمی توانید یک تابع سازنده بدون پارامتر را برای struct تعیین نمایید، بلکه تمامی توابع سازنده struct ها حداقل بایستی دارای یک پارامتر باشند. یک مقدار مشخصی را برای فیلد color تعیین نمودیم، که اگر این کار را انجام نمی دادیم، کامپایلر خطا صادر می کرد. 

یک struct نمی تواند از سایر class کلاس ها یا struct های دیگر به ارث برود (inherit) و کلاس ها هم نمی توانند از struct ها به ارث برده شوند. Structs همچنین از Interface ها پشتیبانی می کنند که بدین معناست که هر struct می تواند Interface های مورد نظر خود را پیاده سازی کند.

پژوهشگر و نویسنده:  دکتر (  افشین رشید )