PDA

View Full Version : سوال: متدهایی که در نوع داده ای enum تعریف شده اند چه کاربردی دارند؟



_programmer _
پنج شنبه 18 شهریور 1395, 21:09 عصر
سلام دوستان

متدهای hasflag و compare to و get type cod در نوع داده ای enum چه کاربردی دارند؟

مهرداد صفا
شنبه 20 شهریور 1395, 14:25 عصر
سلام.
فرض کنید یک enum به شکل زیر داریم:


enum Person
{
Male=1,
Female=2,
Child=4,
Adult=8

}

و می خوایم یک متغیر از این نوع تعریف کنیم که هم مذکر و هم بالغ باشه:


Person x = Person.Male | Person.Adult;


حالا اگر بخوایم بالغ بودن (Person.Adult) این Person رو بسنجیم می تونیم از HasFlag به این شکل استفاده کنیم:


Console.WriteLine(x.HasFlag(Person.Adult)); //true



برای سنجیدن دو مقدار از یک نوع هم می تونید از متود CompareTo استفاده کنید. این متود در صورت تساوی مقدار 0 و در صورت کمتر بودن مقدار اول، مقدار -1و در غیر این صورت مقدار +1 رو بر می گردونه. مثال:


Console.WriteLine(x.CompareTo(Person.Female));
//+1 چون مقدار X =9 و مقدار Female =2 هست و مشخصه که 9 بزرگتر از 2 هست



همون طور که می دونید هر enum یک نوع داده ای داره که غالبا Int32 هست. ولی اگر نیاز داشتید نوع یک enum رو بسنجید می تونید از متود GetTypeCode استفاده کنید. به این صورت:


Console.WriteLine(x.GetTypeCode() == TypeCode.Int32);//true