Extenstion method در سی شارپ چیست ؟ کاربرد آن چیست ؟
لطفا خیلی ساده و واضح به همراه مثال توضیح بدید Extenstion method در سی شارپ چیست ؟ کاربرد آن چیست ؟
پاسخ هوش مصنوعی
متدهای توسعه (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 است.
با درود اکستنشن متدها همانطور که از نامشان پیدا است و مشخص نمونه بارز آن لامدا میباشد که اکستنشن متد مربوط به لینک میباشد که خیلی به ما کمک میکنه و به داد ما میرسه مثل 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() اضافه بشه
اگر توضیحاتم کامل بود لایک کنین از منفی درام
- دسترسی به پکیج های nuget در زمان قطع نت بین الملل
- نمایش آخرین ردیف دیتاگیرید موقع لود در wpf
- مشکل اینترنت جهانی و عدم دسترسی به cdnjs.cloudflare.com
- مشکل در نصب sql server 2022
- جلوگیری از اد شدن خودکار در گروه و کانال تلگرام
- کم کردن حجم فیلم توسط کد در Asp net core
- چه کسانی استوری تلگرام را می بینند ؟
- برای کسب و کار تلگرام پرمیوم بهتره یا واتس اپ بیزینس ؟
- جلوگیری از انتشار غیرمجاز مطالب در کانال های تلگرامی
- تفاوت های تلگرام و واتس اپ چیست ؟
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول