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() اضافه بشه
اگر توضیحاتم کامل بود لایک کنین از منفی درام
- آموزش استفاده از پلاگین گردونه شانس در Asp.net core به همراه سورس
- نمایش متن به صورت فرمت شده در CkEditor
- آموزش استفاده از SignalR در Asp.net Core با مثال عملی
- ادغام چند گزارش استیمول سافت بصورت پی دی اف در یک فایل
- نحوه تغییر استایل کامپوننت select2 چگونه است ؟
- چگونه امنیت پروژه را در Asp.net Core افزایش دهیم ؟
- ارسال پارامتر در دستور window.open جی کویری
- ارسال پارامتر از طریق جاوااسکریپت با کلیک روی تگ a
- خطای 500 زمان اجرا شدن پروژه روی هاست
- کویری نویسی در استیمول سافت جهت فیلتر اطلاعات
- مشکل تاریخ شمسی در سی شارپ
- نمایش گزارش stimulsoft روی کلاینت
- تفاوت های سی شارپ 8 با نسخه های قبلی چیه؟
- انتخاب چند سطر دلخواه توسط چک باکس در DataGrid و محاسبه جمع سطرهای انتخاب شده
- نمایش نوتیفکیشن در سی شارپ
- ارسال پارامتر از سی شارپ به استیمول سافت
- عدم نمایش عکس در دیتاگرید ویو در wpf
- Library Animation برای کنترلهای WPF
- مشکل در تغییر مقدار Text کنترل RibbonBar در کامپوننت DevExpress
- قرار دادن مقادیر ارسالی یک ستون از جدول به صورت سطری در استیمول