#c, آموزش قدم به قدم #c, سی شارپ

this در سی شارپ (this keyword in csharp)

this در سی شارپ

در این جلسه تیم کدگیت را با آموزش this در سی شارپ همراهی کنید. این آموزش ادامه آموزش شی گرایی در سی شارپ است. پیش نیاز این آموزش شامل موارد زیر است:

  1. آشنایی با شی گرایی
  2. آشنایی با constructor

شی گرایی

همه چیز در مورد اشیا است. هماطور که اشیا در دنیای واقعی رفتار میکنند، در دنیای نرم افزار نیز همانگونه اند. اشیا در یک برنامه تقریبا همه کار را انجام میدهند. به عنوان مثال ماشین ها شتاب میگیرند یا انسان ها راه میروند(انسان نیز یک شی است) یا هواپیماها پرواز میکنند و ماهی ها شنا میکنند. به طور مشابه ما در نرم افزار نیز ما اشیایی میسازیم که رفتاری خاص را انجام میدهند. و ما از آن برنامه انتظار داریم که رفتارهای اشیا را انجام دهند(راه رفتن، پرواز کردن …). پس موقعی که  نرم افزار ما اجرا میشود اشیا ما به وجود می آیند.

Constructor در سی شارپ

Constructor در سی شارپ بدین صورت عمل میکند که به ما اجازه ساخت یک شی را میدهد. وقتی ما یک کلاس را new میکنیم متد constructor آن صدا زده میشود و شی مورد نظر را میسازد. پس constructor متدی است است که شی را میسازد.متد constructor ویژگی های زیر را دارد:

  1. این متد چیزی return نمیکند.
  2. نام متد همنام کلاس است.
  3. در هنگام new کردن این متد صدا زده میشود تا شی ما ساخته شود.

This در سی شارپ

در آموزش قبل یک کلاس به نام Human ساختیم و برای آن constructor نیز نوشتیم. حال میخواهیم کد جلسه قبل به شکل زیر بود:

    public class Human
    {
        public String Name;
        public int age;
        public String Height;

        public void Speak(){
            Console.WriteLine("my Name is "+ Name);
            Console.WriteLine("i am "+ age+" year old");
            Console.WriteLine("my height is "+ Height +"meter");
        }

        public void eat(){
            Console.WriteLine("eating......");
        }

        public void walking(){
            Console.WriteLine("walking......");
        }

    }

در کد بالا در constructor ما از متغیرهای دستی استفاده کردیم یعنی مثلا age را برای همه 22 قرار دادیم و هر موقع بخواهیم آن را تغییر دهیم باید یک خط کد بزنیم برای هر شی به صورت جداگانه سن جدایی معرفی کنیم!!!! حالا میخواهیم کمی برنامه خود را پویاتر(dynamic) کنیم. یعنی هنگام new کردن یک شی تمام ویژگیهای شی را وارد کنیم.به کد زیر دقت کنید:

        public Human(String name, int age, String height) {
            this.name = name;
            this.age = age;
            this.height = height;
        }

در کد بالا ما یک constructor با ورودی نوشتیم. و ورودیهای متد ما همنام ویژگیهای(فیلد های کلاس) ما هستند.حال به واژه this میرسیم.کلمه this در سی شارپ به شی که در آن هستیم اشاره دارد. و متغیر آن را در نظر میگیرد. به طور کلی کلمه this در سی شارپ یک اشاره گر به شی است. وقتی ما this.name را صدا میزنیم وارد شی ما میشود و ویژگی name آن را به ما میدهد.

مفهوم this در سی شارپ

توضیحات بالا شاید کمی شما را سردرگم کرده باشد برای همین یک قسمت جداگانه برای توضیح بیشتر this در سی شارپ در نظر گرفتیم. در آموزش قبل گفتیم که وقتی constructor مینویسیم هنگام new کردن سی شارپ آن را صدا میزند. حال ما یک شی از human میسازیم:

Human tom = new Human(“tom”);

اتفاقی که در حافظه میفتد این است که  یک اشاره گر به نام tom ساخته میشود که به آدرس شی ساخته شده human اشاره دارد. پس وقتی ما یک شی را میسازیم یا یک کلاس را new میکنیم در حافظه آن ایجاد میشود و اشاره گری به آن اشاره میکند.

حال اگر ما یک شی دیگر با نام دیگری بسازیم:

Human jack = new Human();

در حافظه یک شی دیگر ساخته شده که با tom فرق دارد و حتی آدرس آن نیز متفاوت است. این مفهوم کلی new کردن در سی شارپ بود. وقتی ما کلمه this در سی شارپ را استفاده میکنیم به آدرس حافظه آن شی میرود و متغیرهای درونی آن را میبیند.

تست this در سی شارپ

برای تست کد های بالا، کد main زیر را بزنید:

        public static void Main (string[] args)
        {
            Human jack = new Human("jack", 12, "1.3");
            jack.Speak();

            Console.WriteLine("-----------");

            Human tom = new Human("tom", 42, "1.7");
            tom.Speak();

            Console.ReadKey ();
        }

در کد بالا از constructor جدید که کلمه this در آن به کار بردیم استفاده کردیم. کد بالا پویاتر و ساده تر از قبل است. خروجی کد this در سی شارپ به صورت زیر است:

my Name is jack
i am 12 year old
my height is 1.3meter
———–
my Name is tom
i am 42 year old
my height is 1.7meter

نوشته های مشابه

1 دیدگاه در “this در سی شارپ (this keyword in csharp)

  1. Daviiiid گفت:

    یکی از کاربدهای this برای اشاره به فیلد های کلاسیه که توش هستیم.مثل همین مثالی که زدید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *