دسته بندی ها
23:50 1401/11/20

Extenstion method در سی شارپ چیست ؟ کاربرد آن چیست ؟

مشخصات سوال کننده :
کاربر : hamid_b     امتیاز کاربر : 518     رتبه کاربر : 4
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 1671
2 نظر
sajjadtoulabi : با سلام متدهایی هستند که متعلق به هیچگونه کلاسی نیستند و ازطریق کلاس های دیگر اضافه میشوند. در واقع متدهای Extension همانطور که از نامشان پیداست متد های اضافی هستند. میتوان متدهای Extension را به اینترفیس ها، ساختارها و کلاس ها در سی شارپ، اضافه کرد. این کار بدون تغییر و ویرایش ساختارها، کلاس ها و اینترفیس ها انجام می شود. متدهای Extension می توانند به کلاس های تعریف شده توسط برنامه نویس و یا کلاس های تعریف شده در دات نت فریمورک اضافه شوند.

امتیاز کاربر : 0   رتبه کاربر : 7074   تاریخ ثبت : 00:16 1401/11/21
sajjadtoulabi : لینک زیر توضیح به همراه مثال داده شده https://darsman.com/blog/extension-method-in-csharp/

امتیاز کاربر : 0   رتبه کاربر : 7074   تاریخ ثبت : 00:17 1401/11/21
هوش مصنوعی

پاسخ هوش مصنوعی

متدهای توسعه (Extension Methods) در زبان برنامه نویسی سی شارپ راهی هستند برای افزودن رفتار به نوع های موجود (مانند کلاس ها و ساختارها) بدون ایجاد یک کلاس جدید یا تغییر در آن ها. این متدها به شما اجازه می دهند که متدهای جدیدی برای یک نوع موجود تعریف کنید، در حالی که شما نه به کد منبع آن نوع دسترسی دارید و نه آن را تغییر می دهید.

کاربرد اصلی متدهای توسعه در زمانی است که می خواهید قابلیت هایی را به یک نوع داده ای اضافه کنید که نه شما مسیولیت ساخت آن را دارید و نه می توانید آن را ویرایش کنید، مانند کلاس های داخلی .NET.

برای تعریف یک متد توسعه، شما باید آن را به صورت static در یک کلاس static بنویسید. اولین پارامتر متد باید با استفاده از کلمه کلیدی this نوعی باشد که می خواهید متد را برای آن توسعه دهید.

در زیر یک مثال ساده از استفاده از متدهای توسعه آورده شده است:

using System;

public static class StringExtensions
{
    public static int WordCount(this string str)
    {
        if (string.IsNullOrWhiteSpace(str))
        {
            return 0;
        }
        return str.Split(new char[] {' ', '\n', '\r'}, StringSplitOptions.RemoveEmptyEntries).Length;
    }
}

class Program
{
    static void Main()
    {
        string text = "سلام جهان! خوش آمدید به برنامه نویسی.";
        int count = text.WordCount();
        Console.WriteLine($"تعداد کلمات: {count}");
    }
}

در این مثال، یک متد توسعه به نام WordCount برای نوع داده ای string تعریف شده است. این متد تعداد کلمات در یک متن را محاسبه می کند. سپس در متد Main ما می توانیم به سادگی از این متد جدید استفاده کنیم، به طوری که انگار بخشی از خود نوع string است.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : Radman 02:52 1401/11/21

با درود اکستنشن متدها همانطور که از نامشان پیدا است و مشخص نمونه بارز آن  لامدا میباشد که اکستنشن متد مربوط به لینک میباشد  که خیلی به ما کمک میکنه و به داد ما میرسه مثل amount.tostring()    

یک نمونه از دستور اکستنشن متد که توسط خودمون ساخته میشه تا بتونیم در کد نویسی به راحتی ازش استفاده کنیم رو براتون میزارم

فرض کنید میخواهیم عدد را به صورت سه رقم سه رقم جدا کنیم در حالت عادی به صورت زیر عمل میکنیم

int amount;
amount=25000;
console.wrteline(amount.tostring("#,0"))
========================================================
extention metod class

public static Class MyClass
{
public static string torial(this int value)
{
return value.tostring("#,0");
}
}

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

از این به بعد هرجا بخواهیم سه رقم سه رقم جدا کنیم فقط کافیه به فیلد خودمون تهش .torial()  اضافه بشه 

اگر توضیحاتم کامل بود لایک کنین از منفی درام

 

به این پاسخ امتیاز بدهید    5
امتیاز: 169 رتبه: 9
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود