برخی اوقات شاید نیاز داشته باشیم برای هر یک از حالتهایی که در یک enum تعریف کردهایم، مقدار عددی خاصی را نیز در نظر بگیریم! البته اگر چنین کاری را هم انجام ندهیم، خود سی شارپ به صورت پیشفرض، از 0 اعدادی را به ترتیب به حالتهای مختلف enum ای که ساختهایم نسبت خواهد داد؛ اما شاید بخواهیم تا هر حالت، یک عدد دلخواهی را برای خود داشته باشد.
روش انجام کار
فرض کنید یک enum به صورت زیر تعریف کردهایم:
1 2 3 4 5 6 |
enum FuLLKade { Member, Admin, Author, Banned } |
در این جا برای هر کدام از حالتها، هیچ مقدار int تعریف نشده است؛ اما در واقع هرکدام شامل یک مقدار int هستند که خود سی شارپ به آنها اختصاص داده است! به این صورت که مقدار Member برابر 0 ، Admin برابر 1 و … خواهد بود. (به ترتیب نوشته شده)
اما شاید بخواهید برای هرکدام از این حالتها، اعداد دلخواهتان را اختصاص دهید. پس به شکل زیر عمل میکنیم.
1 2 3 4 5 6 7 |
enum FuLLKade { Member = 5, Admin = 56, Author = 85, Banned = 99 } |
تنها کافی است با قرار دادن یک = جلوی هرکدام، مقدار آن را تعیین کنیم!
نکتهی مهمی که اینجا لازم است بدانید این است که میتوان برای برخی از این حالتها، هیچ عددی را تعیین نکرد تا خود سی شارپ این کار را انجام دهد، برای مثال به نمونه زیر توجه کنید.
1 2 3 4 5 6 7 |
enum FuLLKade { Member = 85, Admin, Author, Banned = 99 } |
در اینجا، مقدار Author به نظر شما برابر با چند خواهد شد؟!
مقدارهایی که مشخص نشدهاند، از زآخرین مقدار مشخص شده شمرده خواهند شد! در بالا، Admin از ادامهی Member تعیین خواهد شد و بنابراین مقدار آن، 86 میشود و بدین ترتیب، مقدار Author نیز برابر 87 خواهد شد.
– هر حالتی اگر بخواهد به طور پیشفرض عدد خودش را تعیین کند، این عدد را از ادامهی عدد آخرین حالت قبلی خواهد گرفت و زمانی که هیچ حالتی قبل از آن وجود نداشته باشد، مقدار 0 به آن اختصاص خواهد یافت.
نمایش مقدار int یک enum
برای نمایش مقدار یک حالت در enum، کافی است آن را به int تبدیل کنیم. به صورت زیر:
1 |
int number = (int)FullKade.Author; |
پس مقدار عددی حالت Author به داخل متغیر number ریخته میشود.
تبدیل مقدار int به enum
اگر بخواهیم از روی یک عدد به مقدار حالت enum برسیم نیز برعکس بالا عمل خواهیم کرد:
1 |
FuLLKade fullkade = (FuLLKade)85; |
– اگر عدد در بین حالتها وجود نداشته باشد، موقعی که بخواهیم آن enum را نمایش دهیم، مقدار همان عدد چاپ خواهد شد.
نظرات ثبت شده بدون دیدگاه