آموزش سي شارپ - قسمت ششم
گفتيم كه ValueType ها داراي رفتار خاصي هستند. اما چه
رفتاري؟
وقتی یک متغییر از یکی از نوع های Value Type مثل int ایجاد می کنیم
مقدار آن داخل حافظه Stack قرار می گیرد و وقتی از آن متغییر یک کپی میگیریم مقدار
متغییر قبلی داخل متغییر جدید کپی می شود.
یعنی اگر مقدار متغییر دوم رو عوض
کنیم تاثیری روی مقدار متغییر اول نخواهد گذاشت. این رفتار در مورد تمامی ValueType
ها صدق می نماید:
وقتي مقدار متغيير دوم رو تغيير دهيم مقدار متغيير اول دست
نخورده باقي ماند.
Enumerations
فرض بفرمائيد كه شما مي خواهيد
يك كلاس تعريف كنيد به نام انسان. وقتي خواص انسان رو تحت بررسي دارين به جنسيت مي
رسيد. حالا مي خواهيم روي كلاس انسان يك متغيير براي نشان دادن جنسيت تعريف كنيم.
به نظر شما جنسيت رو از چه نوعي بايد در نظر گرفت؟ bool يا int؟
اگر bool در نظر
گرفتيم false به معني مرد خواهد بود يا true؟
اگر int در نظر گرفتيم چه عددي
بيانگر مرد و چه عددي بيانگر زن مي باشد؟ و اگر كاربر شما عددي به غير اعداد
انتخابي شما وارد كرد, چه طور؟
گاهي اوقات در توسعه نرم افزار ها ما به جنس
(Type)هايي نياز داريم كه بتوانيم مقدار شان را محدود كنيم. مثلا همين جنسيت. با
استفاده از Enumeration ها مي توانيم مقدار متغيير جنسيت رو به مرد يا زن محدود
كنيم.
براي ايجاد يك Enumeration بايد در يك فايل با پسوند cs كه بيانگر سي شارپ است از Syntax زير استفاده كنيم:
public enum eSex
{
Male,
Female
}
دقت كنين كه وقتي متغييري از اين جنس بسازيم به هيجوجه مقداري به غير از مرد يا زن نمي توانيم اختصاص دهيم:
eSex Sex; // ايجاد متغيير از جنس يك enum
Sex =
eSex.Male; // مقدار دهي متغيير
حالا مي بينيم كه چطور با استفاده از enum مي توانيم مقدار دهي يك متغيير را به مقادير محدودي نسبت دهيم. در دات هم مثال هاي متعددي از استفاده از enum ها وجود دارد. مثلا يك enum به نام Keys تمامي كليد هاي صفحه كليد رو در خود جاي داده است. يا enumي با نام ConnectionState وضعيت هاي امكان پذير يك Connection رو نشان مي دهد.
ادامه دارد...