نیمچه برنامه نویس و توسعه دهنده بازی
کارهای جذاب با تابع سازنده Constructor در سی شارپ

در حال دیدن ویدیو هایی در رابطه با زبان سی شارپ بودم که متوجه یک نکته جالب شدم که برای خودم هیجان انگیز بود و گفتم شاید برای شما نیز جالب و کاربردی باشد.
در زبان سی شارپ، کلاس ها توابعی تحت عنوان سازنده (Constructor) دارند که در موقع ساخت یک نمونه (instance) از یک کلاس فراخوانی می شوند و کار هایی که برا آن ها تعریف شده باشد را انجام میدهند.
در کلاس ها می توانیم چندین تابع سازنده داشته باشیم که هرکدام متناسب با پارامتر هایی که می خواهند صدا زده شوند. ماننده مثال زیر:
1234567891011121314151617181920class Person { public string Name; public int id; public Person( ) { Console.WriteLine("person Constructor 0"); } public Person(int id) { this.id = id; Console.WriteLine("person Constructor 1"); } public Person(int id, string name) { this.id = id; this.Name = name; Console.WriteLine("person Constructor 2"); } }
حال ما می توانیم یک نمونه از این کلاس بسازیم و متناسب با پارامتر هایی که به تابع سازنده آن ارسال میکنیم، یکی از توابع سازنده آن اجرا شوند.
احتمالا خیلی از دوستان تا به اینجای مسئله را آگاهی دارند اما نکته قابل توجه و جالبی که می خواستم راجب آن با شما صحبت کنم این است که ما می توانیم این توابع سازنده را به ترتیب و پشت هم با یک دستور فرا خوانی کنیم :)
به اسکریپت زیر که تغییر یافته اسکریپت بالا با استفاده از نکته ذکر شده است توجه کنید :
123456789101112131415161718192021class Person { public string Name; public int id; public Person() { Console.WriteLine("person Constructor 0"); } public Person(int id) : this() { this.id = id; Console.WriteLine("person Constructor 1"); } public Person(int id, string name) : this(id) { this.Name = name; Console.WriteLine("person Constructor 2"); } }
حال اگر قطعه کد زیر را در تابع Main اجرا کنیم شاهد فراخوانی تمامی توابع سازنده خواهیم بود که به ترتیب فراخوانی می شوند.
1var p = new Person(5, "sina");
این هم از خروجی به همراه دو قطعه کد اضافی

موفق و خندون باشید. :)
مطلبی دیگر از این انتشارات
آبا جان پاره ی جان است❤
مطلبی دیگر از این انتشارات
منِ برنده!
مطلبی دیگر از این انتشارات
چرا ما قاتل سریالی نمیشیم؟