soheil moonesi
soheil moonesi
خواندن ۲ دقیقه·۱۰ ماه پیش

C# this keyword

کلمه this دو تا قابلیت داره که میخوایم یکی یکی مورد بررسی قرارشون بدیم

مورد اول اینه که this اشاره میکنه به نمونه جاری کلاس، خوب حالا بیایم برای توضیح این قسمت یه مثال بنویسیم.

public class Person{ private int Age; public Person(){ this.Age=30; } }

اینجا دیگه برای مقدار دادن به age نیازی نیست بنویسیم :

person.Age=30;

میتونیم از this استفاده کنیم، چون this در واقع داره به خوده Person اشاره میکنه.

حالا میریم سراغ مورد دوم :

فرض کنید که شما constructor رو overload کردید و به ازای ورودی های مختلف constructor های مختلفی رو درست کردید ولی میخواید قبل از اجرای هر کدوم از اون ها یک constructor دیگه اجرا بشه و بعدش اون اجرا بشه. توی مثال بهتر میشه توضیحش داد:

public class Person{ private string role public Person() اول { this.role='developer' } public Person(int age,string name):this() دوم { } public Person(int age, string name,string lastName):this() سوم { } }

خوب اینجوری اگر constructor دومی یا سومی بخوان اجرا بشن قبلش constructor اول اجرا میشه

دقت داشته باشید که با عوض کردن ورودی های داخل this میتونیم constructor های دیگه رو صدا بزنیم به طور مثال اگر this سومی رو اینطوری بنویسیم :

public Person(int age, string name,string lastName):this(age,name)

اینجا میاد constructor دوم اجرا میشه و بعد constructor سوم

خوب حالا که تا اینجا اومدیم بریم یه قسمت خیلی باحال رو توی visual studio به اسم call stack ببینیم. توی call stack همه اتفاق ها رو در زمان اجرا میاد و نشون میده. اگر ما توی قسمت Main بیایم اینطوری بنویسیم:

Person person = new Person(30,"soheil","moonesi");

خوب حالا بیایم طبق مراحل بریم جلو:

همونطوری که میبینید در مرحله اول شروع برنامه از خط 7 کلاس program و تابع Main شروع میشه و بعد در مرحله دوم میرسه به counstructor اونجا با this مواجه میشه که داره به یه constructor دیگه اشاره میکنه و بعد میره مرحله 3 که اونجا هم میبینه که داره به یه constructor دیگه اشاره میکنه و در نهایت هم مرحله 4 و اجرا شدن constructor

حالا دقت کنید که بعد از این که

public Person()

اجرا شد بعدش میره constructor بعدی

public Person(int age,string name)

و نهایت آخری اجرا میشه

مطالب نوشته شده، برداشت من از کلاس C# استاد عمران صادقی هستش. خیلی ممنونم از ایشون به خاطر تدریس عالی که داشتند.




public personthisint ageconstructor اجراperson int
C# enthusiast
شاید از این پست‌ها خوشتان بیاید