Member ها در سی شارپ

Member ها در سی شارپ

بدون دیدگاه

آشنایی با Member ها در سی شارپ

Member ها در سی شارپ توصیف کننده ساختار Data Type ها هستند. خصوصیات، عملکردها و رخدادهای یک Data Type از طریق Member های آن مشخص می‌شود. گرچه مهم نیست نوع داده Reference Type یا Value Type باشد. چهار گروه از member ها در سی شارپ برای توصیف یک Data Type وجود دارند:

Field چیست؟

فیلد ها، متغییر هایی هستند که در سطح Data Type تعریف شده اند. با توجه به سطح دسترسی ممکن است این فیلد ها از خارج از Data Type قابل دسترس باشند. اگر به یک فیلد دسترسی داشته باشید، امکان خواندن و نوشتن آن را خواهید داشت. گرچه می‌توان یک فیلد را readonly کرد. در این صورت فقط در Constructor می‌توانید آن ‌را مقداردهی نمایید. ولی با این حال باز هم امکان Validation بر روی Range و شرایط مقادیر موجود در Field را نخواهید داشت.

public class Person
{
            public string Name;
            public int Age;
}

برای رفع این محدودیت می‌ توان از Property ها بهره برد.

Property چیست؟

Property در واقع توصیف کننده ی خصوصیات Data Type است. تفاوت Property با Field در این است که Property فضایی برای ذخیره سازی دیتا ندارد. در واقع Property ابزاری است که دو مسیر مجزا برای دسترسی به دیتا فراهم می‌کند‌. دقت داشته باشید که این دیتا عموما از Field خوانده شده و در آن نوشته می‌شود. ولی هیچ الزامی به وجود Field در کناز Property نخواهد بود. هر Property دارای دو بخش مجزا می باشد:

  • set
  • get

set برای مقداردهی به Property استفاده می شود. از طریق این بخش می‌توانید به مقدازی که از بیرون به Property نصبت داده شده، در قالب کلمه رزرو شده value دسترسی داشته باشید. همچنین می‌توان با انجام validation و بررسی مقدار موجود در value تصمیم گرفت آیا این مقدار استفاده شود یا خیر. ضمنا اگر بخش set را از یک Property حذف نمایید امکان انتصاب مقدار به آن وجود نخواهد داشت. در این صورت Property فقط خواندنی و یا readonly می‌شود.

get بخشی برای خواندن مقدار Property است. در این بخش عموما مقدار فیلد مرتبط با Property خوانده شده و return می شود. همچنین می‌توانید با حذف get امکان خواندن Property را از بین ببرید. در این صورت Property فقط نوشتنی یا writeonly خواهد شد. در بخش get گاهی می‌توان با تبدیل مقدار فیلد مرتبط، دیتا را با نوع و ساختاری متفاوت از فیلد برگرداند.

public class Person
{
          public string Name;
          private int age;
          public string Age
           {
                     get {

                               return age;
                     
}

                     set {
                               if ( value < 0 )
                                         age  =  ۰;
                               else if ( value > 130 )
                                         age  =  ۱۳۰;
                               else
                                         age  =  value;

                     }
           }
}

Method چیست؟

Method ها توصیف کننده عملکردها هستند. یک عملکرد ممکن است صرفا به انجام کاری محدود شود. در این صورت دیتایی پس از اجرای Method حاصل نمی‌شود. اینگونه Method ها از نوع void هستند. در مقابل، برخی Method ها پس از اجرای دستورات، دیتایی از نوعی مشخص بدست می‌آورند. این دیتا مقدار مورد نظر ماست. عملا منظور ما از اجرای Method بدست اوردن آن دیتا می باشد. نوع خروجی این Method ها یکی از Data Type های تعریف شده است.

از طرفی ممکن است Method نیاز به دریافت مقادیری برای اجرای دستورات باشد. این مقادیر در قالب parameter های ورودی به Method منتقل می شوند. پارامتر ها دارای نوع مشخص و نامی استاندارد برای تمایز از سایر پارامترها می باشند. پارامتر ها می‌توانند یکی از انواع زیر باشند:

  • Input (حالت پیش فرض)
  • in
  • out
  • ref

public class Person
{
          public string Name;
          public int Age;
          public string DisplayMessage( string formatString = “{۰} is {1} years old.” )
           {
                    return String.Format( formatString , Name, Age );

           }
}

Event چیست؟

Event توصیف کننده رخدادهایی است که برای نمونه تعریف شده از Data Type رخ خواهد داد. با استفاده از ارتباط دادن Method ها به هر Event می توان به رخداد مورد نظر پاسخ داد. به این Method ها Event Handler گفته می شود. برای ابن منظور باید Signature و ساختار Method مورد نظر با نوع Event همخوانی داشته باشد. در این میان، Delegate ها پل ارتباطی بین Event ها و Method های مدیریت کننده آن می باشند.

public class Person
{
          public string Name;
          public int Age;
          public delegate void GotSickDelegate ( object Sender, string DiseaseName );

          public event GotSickDelegate GotSickEvent;
}

آواتار کاربر

شهاب ساری اصلانی

از سال 1385 به صورت جدی مشغول تدریس در حوزه های برنامه نویسی دات نت و طراحی بانک های اطلاعاتی بوده ام. تدریس به عنوان یک حرفه همیشه برایم جذاب بوده و یادگیری جدیدترین مباحث لذت بخش است.

ارسال یک دیدگاه

آدرس ایمیل شما منتشر نخواهد شد.