PDA

View Full Version : متد الحاقی (Extension methods)



zkazemi
جمعه 14 خرداد 1389, 17:54 عصر
متد الحاقی (Extension methods)
متد های الحاقی متد هایی هستند برای اضافه کردن توابع مورد نیاز برنامه نویسان به کلاس ها/.این کلاس ها می توانند هم کلاس های پیش فرض .net باشند و هم کلاس هایی که توسط برنامه نویسان نوشته می شود. Linq نیز از این فناوری جدید برای فراخوانی متد های خود استفاده می کند، حال که با وظیقه متد الحاقی آشنا شدیم بد نیست که نحوه تعریف آن و همچنین کار با آن را نیز فرا بگیریم.
برای ایجاد متد الحاقی باید آن را در یک کلاس static تعریف کنیم/ بدین مفهوم که در کلاسی که این متد را می نویسیم آن کلاس باید از نوع استاتیک باشد. در مثال زیر یک متد الحاقی می نویسیم که تعداد ارقام یک عدد را برمی گرداند، بدین مفهوم که اگر عدد 163 را به آن دادیم عدد 3 را بر گرداند. برای این کار ابتدا یک کلاس استاتیک تعریف می کنیم و در داخل آن این متد را می نویسیم




Static class EX_class


{ public static int length(this int number)


{


String num=num.ToString ();


return num;


}


}

همانگونه که مشاهده می کنید بسیار ساده بود. فقط یک کلاس استاتیک به نام EX_class تعریف شد و بعد داخل این کلاس استاتیک یک متد به نام length تعریف کردیم که یک پارامتر عددی دارد.
این نکته قابل توجه است که پیش از نوشتن پارامتر اول از کلمه کلیدی this استفاده کنید. داخل متد نیز کار زیادی انجام ندادیم. البته این قسمت مربوط به وظیفه متد شماست به علت اینکه متدی که ما تعریف کردیم هدفش مشخص کردن تعداد ارقام یک عدد است ، از اینرو عدد را به رشته تبدیل می کنیم بعد طول رشته را بدست آورده و بر می گردانیم . در حال حاضر یک متد الحاقی تعریف شد. روش استفاده از آن نیز بسیار ساد هاست .حال در Form1 دو عدد textbox و یک button و دو lable را قرار دهید.
روی button دابل کلیک کنید و کدر زیر را بنویسید:




Int digit=Convert.ToInt16(textbox1.Text);


Textbox2.Text=digit.lenght().ToString();


مطمئناً در زمان نوشتن خط دوم و بعد از گذاشتن . بعد از متغییر digit متد الحاقی خود را با یک آیکون متفاوت مشاهده کردید.
در زمان تعریف متد الحاقی به نامی که برای این متد انتخاب می کنید توجه لازم را داشته باشید. زیرا اگر نام متد الحاقی با نام متد های داخلی آن کلاس یکسان باشد باشد، الویت اجرا با متد داخلی خواهد بود.

Cybersilent
شنبه 11 خرداد 1392, 13:50 عصر
جهت آشنایی دوستان:
مرجعی برای متدهای الحاقی از قبل نوشته شده توسط برنامه نویسان سراسر دنیا
http://extensionmethod.net/