استفاده از تابع this

استفاده از تابع this

نوشته شده توسط: محمد رضا موسائی سجزی
۲۵ فروردین ۱۳۹۵
زمان مطالعه: 6 دقیقه
۱
(۱)

مقدمه

با سلام خدمت تمام دوستان نیک آموزی در اینجا قصد دارم در ابتدا به طرح یک سناریو پرداخته و سپس روشی را برای آن به شما معرفی نمایم.
سناریو: شاید برای شما دوستان پیش آمده باشد که در زبان  برنامه نویسی C#.Net برای یک کلاس چندین سازنده داشته باشید ( مفهوم سربارگذاری توابع) و در تمام یا برخی از سازنده ها قصد داشته باشید که یک سری از دستورات به صورت پیش فرض و مشترک انجام شوند احتمالا یکی از روش هایی که به ذهن شما می رسد این می باشد که دستورات مشترک در یک تابع در همان کلاس تعریف نمائید و در سازنده های مورد نظر فراخوانی نمائید در صورتی که می توان این امر را با استفاده از تابع this مرتفع گرداند.
 به قطعه کد زیر دقت نمائید.

{
public Int64 Emp_Number { get; set; }
public string Emp_Name { get; set; }
public string Emp_Family { get; set; }
public DateTime Emp_Birthdate { get; set; }
public string Emp_Address { get; set; }
public bool Emp_Gender { get; set; }
public Emploee(Int64 emp_Number)
{
this.Emp_Number = emp_Number;
}
public Emploee(Int64 emp_Number, string emp_Name, string emp_Family)
{
this.Emp_Number = emp_Number;
this.Emp_Name = emp_Name;
this.Emp_Family = emp_Family;
}
public Emploee(Int64 emp_Number, string emp_Name, string emp_Family,
DateTime emp_Birthdate, string emp_Address, bool emp_Gender)
{
this.Emp_Number = emp_Number;
this.Emp_Name = emp_Name;
this.Emp_Family = emp_Family;
this.Emp_Birthdate = emp_Birthdate;
this.Emp_Address = emp_Address;
this.Emp_Gender = emp_Gender;
}
}
همانگونه که مشاهده می کنید مقدار دهی در تمام توابع سازنده تکرار شد است این دستورات می تواند مقدار دهی خصوصیات کلاس باشد یا یک سری دستور دیگر که در بهترین حالت می توان یک تابع عمومی نوشت و در آن تابع عمومی در این کلاس این عملیات را انجام داد. با توجه به قطعه کد بالا می توان آن را به صورتی که در زیر مشاهده می کنید تغییر داد. به تکه کد زیر دقت کنید.
 public class Emploee
{
public Int64 Emp_Number { get; set; }
public string Emp_Name { get; set; }
public string Emp_Family { get; set; }
public DateTime Emp_Birthdate { get; set; }
public string Emp_Address { get; set; }
public bool Emp_Gender { get; set; }
public Emploee(Int64 emp_Number)
{
this.Emp_Number = emp_Number;
/*
* وجود سایر دستورات مربوطه
*/
}
public Emploee(Int64 emp_Number, string emp_Name, string emp_Family)
:this(emp_Number)
{
this.Emp_Name = emp_Name;
this.Emp_Family = emp_Family;
/*
* وجود سایر دستورات مربوطه
*/
}
public Emploee(Int64 emp_Number, string emp_Name, string emp_Family,
DateTime emp_Birthdate, string emp_Address, bool emp_Gender)
: this(emp_Number, emp_Name, emp_Family)
{
this.Emp_Birthdate = emp_Birthdate;
this.Emp_Address = emp_Address;
this.Emp_Gender = emp_Gender;
/*
* وجود سایر دستورات مربوطه
*/
}
}

 همانگونه که ملاحظه می کنید بعد از پرانتز هر سازنده می توان با کلمه کلیدی this سازنده مورد نظر را فراخوانی نمود. این امر بیشتر برای نوشتن Component ها می تواند مورد استفاده قرار گیرد چرا که در ساخت یک Component شاید نیاز باشد تنظیمات اولیه در توابع سازنده تکرار شوند.

(شایان ذکر است در صورتی که برای سازنده ای نخواهید سازنده ای را فراخوانی نماید می توانید از تابع this برای آن سازنده استفاده ننمائید)
امیدوارم مطلب فوق، برای شما دوستان نیک آموزی مفید واقع شود.

چه رتبه ای می‌دهید؟

میانگین ۱ / ۵. از مجموع ۱

اولین نفر باش

title sign
معرفی نویسنده
محمد رضا موسائی سجزی
مقالات
2 مقاله توسط این نویسنده
محصولات
0 دوره توسط این نویسنده
محمد رضا موسائی سجزی
پروفایل نویسنده
title sign
معرفی محصول
title sign
دیدگاه کاربران