Advanced C#1 دقیقه مطالعه
مفاهیم پیشرفته C# (Advanced C#)
مجموعهای از قابلیتهای پیشرفته C# مثل Generics، Delegate، LINQ و Reflection که کدنویسی Type-safe، انعطافپذیر و بهینه را ممکن میکنند.
چرا مهم است؟
تسلط بر این مفاهیم فاصله بین یک برنامهنویس معمولی و یک توسعهدهنده حرفهای C# است — پایه اکثر فریمورکها و کتابخانههای .NET همین قابلیتهاست.
مهمترین مفاهیم
| مفهوم | کاربرد کوتاه |
|---|---|
| Generics | کلاس/متد مستقل از نوع، بدون Boxing/Unboxing |
| Delegate | اشارهگر Type-safe به متد؛ پایه Event و Callback |
| Event | الگوی Publisher/Subscriber برای اطلاعرسانی تغییرات |
| Lambda Expression | نوشتن توابع کوتاه بهصورت درجا |
| LINQ | Query روی Collection، Database و XML |
| Extension Methods | افزودن متد به کلاسی بدون تغییر سورس آن |
| Expression Trees | نمایش کد بهصورت Tree؛ پایه EF Core و LINQ Provider |
| Reflection | بررسی Typeها در Runtime؛ پایه DI و ORM |
| Attributes | افزودن Metadata به کلاس/متد (مثلاً Validation) |
| Pattern Matching | سینتکس فشرده برای بررسی نوع و مقدار |
| Records | نوع داده Immutable با Value Equality رایگان |
| Span/Memory\ |
کار با حافظه بدون Copy اضافه؛ افزایش Performance |
| Nullable Reference Types | جلوگیری از NullReferenceException در Compile-time |
نمونه کد
// Generic
public class Repository<T> where T : class
{
public void Add(T item) { }
}
// Record
public record User(string Name, int Age);
// Pattern Matching
if (input is int n && n > 0) { }
نکات مهم
GenericsباBoxing/Unboxingمخالف است و Type Safety میدهد.DelegateپایهEventوLambdaاست.Reflectionقدرتمند اما کند است — فقط جایی که لازم است استفاده شود.Recordبرای دادههای Immutable مناسبتر ازClassاست.Span<T>مصرف حافظه را در سناریوهای پرفورمنسمحور کاهش میدهد.
نکته کلیدی: این مفاهیم پایه اکثر فریمورکهای .NET (از جمله EF Core و ASP.NET Core) هستند؛ فهمیدنشان یعنی فهمیدن اینکه فریمورکها چطور زیر پوست خودشان کار میکنند.
خلاصه
- Generics، Delegate/Event و LINQ ابزارهای روزمره کدنویسی Type-safe در C# هستند.
- Reflection و Expression Trees پایه فریمورکهایی مثل EF Core و DI هستند.
- Record، Pattern Matching و Span
ابزارهای مدرنتر برای کد امنتر و سریعتر هستند.
حالا امتحان کن
🧩آزمون مفاهیم پیشرفته C# (Advanced C#)6 سؤال · نمره قبولی 60٪این مطلب مفید بود؟
☆نشان کردن