ایجاد انواع کلاس ها با modifier ها در سی شارپ

ایجاد انواع کلاس ها با modifier ها در سی شارپ
فهرست مقاله [نمایش]

    در این مقاله modifierها یا تغییردهندها  در زبان سی شارپ را به شما آموزش می‌دهیم البته توجه داشته باشید که modifierها با Accsess modifierها متفاوت هستند و Accsess modifier به معنی سطح دسترسی است برای دریافت اطلاعات بیشتر در مورد Accsess modifierها می‌توانید به قسمت 29  دوره سی شارپ متوسط وبسایت باگتو مراجعه کنید.

    در واقع modifierها یک سری کلمات کلیدی هستند که به کلاس‌ها و متدها و متغیرهای ما معنی و مفهوم خاصی می‌بخشند. ما در سی شارپ چند نوع تغییردهنده داریم که در ادامه آنها را توضیح می‌دهیم.

    بعد دیدن  آموزش سی شارپ  در دوره متوسط سطح شی شارپ می توانید به راحتی modifierها را از Accsess modifierها تشخیص دهید.

     

     

    1.abstract:

    اگر در تعریف کلاس از این کلمه کلیدی استفاده کنیم این کلاس مخصوص ارث‌بری می‌شود و نمی‌توان از آن نمونه‌گیری کرد ارث‌بری به این معنی است که یک کلاس از ویژگی‌های کلاس دیگر که کلاس پدر خود است بهره‌مند شود یعنی اگر کلاس a  از کلاس b  ارث‌بری کند به‌عنوان‌مثال اگر کلاسb پراپرتی به نام name  داشته باشد کلاس a  نیز این پراپرتی را خواهد داشت به شبه کدهای زیر دقت کنید

    public abstract class b
    
    {
    
        string name;
    
    }
    
    public class a:b
    
    {
    
        string family;
    
    }

     

    در کد بالا اگر بخواهیم از کلاس b  نمونه‌گیری کنیم این کار غیرمجاز است زیرا از کلمه کلیدی abstract استفاده شده و این کلمه کلیدی به این کلاس این معنی را می‌بخشد که فقط برای ارث‌بری است و نمی‌توان از آن نمونه‌گیری کرد

     

     

    2.const:

    اگر در تعریف متغیر از این کلمه کلیدی استفاده کنیم مقدار آن تا انتهای برنامه ثابت است و هرگز عوض نمی‌شود برای مثال اگر مقدار متغیر num  برابر 10 باشد تا آخر برنامه مقدار آن ثابت است و دیگر نمی‌توان مقدار آن را عوض کرد یا تغییر داد

    const int num = 10;

     

    3.event :

    با استفاده از این کلمه کلیدی می‌توان برای کلاس‌ها رویداد ایجاد کرد اگر با windows applicationها یا wpf  کار کرده باشید متوجه می‌شوید که هرکدام از المان‌های صفحه (مثلاً دکمه‌ها) کلاس‌هایی هستند که رویدادهای مختلفی دارند مانند رویداد click  یا رویداد mouse hover یا رویداد textchange  و غیره ...

     برای مثال:

    public event EventHandler OnMaximum;

     

    البته با کد بالا یک رویداد کامل ساخته نمی‌شود بلکه باید این رویداد پیاده‌سازی شود و هدف ما در این بخش نمایش کلمه کلیدی event  برای شما بود و برای آموزش کامل این مباحث پیشرفته می‌توانید به دوره ستارگان سی شارپ مراجعه فرمایید

    4.extern:

    می‌توان متدهایی ایجاد کرد که پیاده‌سازی آنها در یک کتابخانه خارجی است و می‌توان آن را به متد اضافه کرد

        [DllImport("Cmdll.dll")]
    
        public static extern int SampleMethod(int x);

    در مثال بالا درون dll  پیاده‌سازی متد SimpleMethod  را داریم و با استفاده از اتریبیوت آدرس و نام دی ال ال را میدهیم و هرگاه از این متد استفاده کنم به‌صورت خودکار پیاده‌سازی آن در آن دی ال ال اجرا می‌شود

     

    5.override:

    برای متدهای virtual  کلاس‌های پدر می‌توان پیاده‌سازی جدید نوشت

    public class b
    
    {
    
        public virtual string SimpleMethod()
    
        {
    
            return "Returned From parent Class";
    
        }
    
    }
    
    public class a:b
    
    {
    
        public override string SimpleMethod()
    
        {
    
            return "Returned From Child Class";
    
        }
    
    }

    کد بالا به این شکل کار می‌کند که ما یک متد داریم ولی در کلاس فرزند پیاده‌سازی متفاوتی نسبت به کلاس پدر دارد اگر از کلاس پدر نمونه‌گیری کنیم با پیاده‌سازی خودش اجرا می‌شود ولی اگر از کلاس فرزند نمونه‌گیری کنیم با پیاده‌سازی خودش را در خروجی دریافت می‌کنیم

    6.readonly :

    می‌توان پراپرتی هایی ایجاد کرد که فقط خواندنی باشند و فقط در همان کلاس خودش می‌توان به آن مقدار داد و در هنگام تعریف متغیر

    private readonly string name="Bugeto.net";

    در کد بالا ما متغیری تعریف کردیم که دیگر جای دیگری در برنامه نمی‌توان به آن مقدار داد و فقط می‌توان مقدار آن را خواند

     

     

    7.seald:

    با استفاده از کلمه کلیدی seald  می‌توان کلاس‌های مهروموم شده یا کلاس‌های عقیم ایجاد کرد به این معنی که نمی‌توان از این کلاس‌ها ارث‌بری کرد و این کلاس‌ها هیچ فرزندی ندارند و فقط می‌توان از آن‌ها نمونه‌گیری کرد دقیقاً برعکس کلاس‌های abstract هستند به نمونه زیر توجه کنید.

    public class b
    
    {
    
        public string Name { get; set; }
    
    }
    
    public sealed class a:b
    
    {
    
        public string Family { get; set; }
    
    }

    در مثال بالا کلاس a که از کلاس b  ارث‌بری کرده است و به‌صورت seald  تعریف شده پس در نتیجه دیگر نمی‌توان از آن ارث‌بری کرد و اگر از آن ارث‌بری کنیم کامپایلر ارور می‌دهد فقط می‌توانیم از آنها نمونه تهیه کنیم

    8.static :

    می‌توان کلاس‌ها و متدهای ایستا تعریف کرد یعنی اگر بخواهیم از این کلاس‌ها یا متدهای درون آنها استفاده کنیم نیازی به نمونه‌گیری نداریم

    public static class SimpleClass
    
    {
    
        public static string SimpleMethod()
    
        {
    
            return "Hello Bugeto";
    
        }
    
    }

     

    در کد بالا ما کلاس SimpleClass  را به‌صورت ایستا تعریف کردیم پس در نتیجه متد داخل آن را هم باید به‌صورت ایستا تعریف کنیم. حالا برای استفاده از این کلاس و متد نیازی به نمونه‌گیری نداریم و به‌صورت زیر از آن استفاده می‌کنیم

    Console.WriteLine(SimpleClass.SimpleMethod());

    همان‌طور که می‌بینید نمونه‌ای از کلاس ایستا تعریف نکردیم و به‌صورت مستقیم از آن استفاده می‌کنیم حالا با کد بالا عبارت "”Hello Bugeto در خروجی چاپ می‌شود

     

    9.Unsafe:

    می‌توان متدهای ناامن نوشت یعنی اینکه می‌توان عملیات‌هایی که کامپایلر انجام نمی‌دهد را انجام دهیم برخی عملیات‌ها ناامن هستند و توسط کامپایلر انجام نمی‌شوند

    unsafe static void SimpleMethod()
    
    {
    
        // Unsafe context:
    
    }

    حال اگر درون بدنه این متد عملیاتی بنویسیم که ناامن باشند کامپایلر آن عملیات‌ها را انجام خواهد.

    10.Virtual  :

    اگر متدی virtual باشد می‌توان در کلاس فرزند انرا override   کرد همانطور که در مثال بالاتر در قسمت override  به شما اموزش دادیم تنها متد هایی که از نوع virtual باشند را میتوان override  کرد.

    Public class SimpleClass
    
    {
    
        public virtual string SimpleMethod()
    
        {
    
            return "Hello Bugeto";
    
        }
    
    }

     

    در کد بالا متد Simple Method  را می‌توان در کلاسی که از کلاس SimpleClass  ارث‌بری کرده را override  کرد

     

     

    11.volatile  :

    با این کلمه کلیدی می‌توان متغیرهای فرار تعریف کرد این متغیرها قابل cache  شدن در کش پردازنده نیستند و درون رم قرار می‌گیرند.

    public class SimpleClass
    
    {
    
        public volatile int SimpleVariable;
    
        public void Test(int i)
    
        {
    
            SimpleVariable = i;
    
        }

    }

    در کد بالا زمانی که از کلاس نمونه‌گیری می‌کنیم و از متد Test  استفاده می کنیم ورودی هر مقداری که باشد درون متغیر SimpleVariable  ریخته می شود که این متغیر درون حافظه کش پردازنده ذخیره نمی‌شود و فقط بر روی رم می‌ماند

    حتما برای بهتر متوجه شدن این مبحث ویدئوهای مربوط به متغییرها را در دوره سی شارپ متوسط ببینید البته ناگفته نماند که صرفاً خواندن این مقاله کافی نیست بلکه باید تمرین و تکرار کنید تا این موضوع را به‌خوبی متوجه شوید

     

     


    • نویسنده: احمدرضا غلامی

    ارسال دیدگاه

    برای افزودن دیدگاه خود، نیاز است ابتدا وارد حساب کاربری‌تان شوید


    دیدگاه کاربران