کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش متدهای توسعه یافته Extension Methods در C#

آموزش متدهای توسعه یافته Extension Methods در C# :

قابلیت جدید دیگر زبان C# 3.0، متدهای توسعه یافته یا Extension Methods است. این ویژگی به شما امکان می دهد تا قابلیت های جدیدی را به یک نوع داده ای یا type موجود اضافه کنید، بدون این که نیاز داشته باشید آن type را به صورت یک زیرمجموعه یا کلاس به ارث رفته درآورد یا مجددا کامپایلش کنید. به عبارت دیگر می توانید عملکردهای جدیدی را به یک نوع داده ای اضافه کنید، بدون این که نسخه اصلی آن را تغییر دهید.
برای مثال ممکن است در موردی بخواهید بدانید یک نوع داده ای متنی یا string شامل اعداد است یا خیر. راه حل عادی برای انجام این کار، تعریف یک تابع یا function بوده و هر زمان که نیاز دارید آن تابع را فراخوانی می کنید. پس از این که چند مدل از این نوع تابع ها را تعریف کردید، می توانید آن ها را در یک کلاس به صورت زیر قرار دهید (utility class) :

public class MyUtils
{
    public static bool IsNumeric(string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}
            

پس می توانید یک متغیر متنی یا string را به صورت زیر چک نمایید :

string test = "4";
if (MyUtils.IsNumeric(test))
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");              
            

اما به وسیله متدهای توسعه یافته یا Extension Methods، می توانید کلاس string را به گونه ای گسترش داده تا به صورت مستقیم عملیات فوق را انجام دهد. این کار با تعیین یک کلاس ثابت Static Class و تعریف چندین تابع ثابت Static Methods درون آن به عنوان کتابخانه ای از کدها، صورت می گیرد. مثال زیر، نحوه کدنویسی را به صورت عملی نشان داده است :

public static class MyExtensionMethods
{
    public static bool IsNumeric(this string s)
    {
        float output;
        return float.TryParse(s, out output);
    }
}
               
نکته :

تنها چیزی که این متد را از سایر Static Methods ها، متمایز می کند، به کار بردن واژه کلیدی this در بخش پرانتز پارامترهای تابع است. این کلمه کلیدی به کامپایلر اطلاع می دهد که این تابع یک Extension Methods می باشد و تنها کار لازم جهت تبدیل یک متد معمولی به یک متد توسعه یافته است.


پس از انجام مراحل فوق، می توانید تابع IsNumeric() را به صورت مستقیم بر روی شی string به کار برید ، به صورت کد زیر :

string test = "4";
if (test.IsNumeric())
    Console.WriteLine("Yes");
else
    Console.WriteLine("No");
                            
1395/08/13 13830 1832
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...