TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2371 1.73K
مفهوم Generics در سی‌شارپ

#csharp_for_beginners

در برنامه‌نویسی، معمولاً کلاس‌ها و متدها برای نوع خاصی از داده طراحی می‌شوند. برای مثال ممکن است یک کلاس فقط برای اعداد صحیح یا فقط برای رشته‌ها نوشته شود. این موضوع باعث افزایش حجم کد و کاهش انعطاف‌پذیری برنامه می‌شود. Generics این مشکل را حل می‌کند و امکان تعریف کلاس‌ها و متدهای عمومی را فراهم می‌سازد.

در جنریک‌ها از پارامتر نوع (Type Parameter) استفاده می‌شود که معمولاً با حرف T نمایش داده می‌شود. این پارامتر هنگام ساخت شیء، با نوع واقعی داده جایگزین خواهد شد.

ساختار کلاس Generic
ساختار کلی یک کلاس جنریک به شکل زیر است:

class ClassName<T>
{
T data;

public ClassName(T value)
{
data = value;
}

public void Display()
{
Console.WriteLine(data);
}
}


در این مثال، T می‌تواند هر نوع داده‌ای مانند int، string یا حتی کلاس‌های سفارشی باشد.

افزایش قابلیت استفاده مجدد از کد
با استفاده از Generics می‌توان یک کلاس یا متد را برای انواع مختلف داده استفاده کرد و دیگر نیازی به نوشتن کلاس‌های جداگانه نیست.

جنریک (Generic) با چند پارامتر نوع
در سی‌شارپ می‌توان از چند پارامتر نوع نیز استفاده کرد:

class Pair<T1, T2>
{
public T1 First;
public T2 Second;

public Pair(T1 first, T2 second)
{
First = first;
Second = second;
}
}


نمونه استفاده:

Pair<int, string> pair = new Pair<int, string>(1, "One");


در این مثال، T1 برابر int و T2 برابر string خواهد بود.

کاربرد Generics در کتابخانه‌های سی‌شارپ

بسیاری از کلاس‌های آماده در فضای نام System.Collections.Generic بر پایه جنریک‌ها ساخته شده‌اند. برای مثال:

List<T>
Dictionary<TKey, TValue>
Queue<T>
Stack<T>

این کلاس‌ها امکان ذخیره و مدیریت داده‌ها را به صورت ایمن و بهینه فراهم می‌کنند.

🔗 مطلب کامل را در این لینک می‌توانید مطالعه کنید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

کانال تلگرام:
@SoftwarePhilosophy

______
GeeksforGeeks Generics and Generic Classes in C# - GeeksforGeeks Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
  • ❤ 5
  • 👍 4
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →