ویژگی‌های جدید C# 4.0

ویژگی‌های جدید C# 4.0

نسخه C# 4.0 که در آوریل 2010 همراه با Visual Studio 2010 منتشر شد، مجموعه‌ای از ویژگی‌های جدید و بهبودها را به زبان اضافه کرد. این نسخه با تمرکز بر تسهیل ارتباط با کدهای دینامیک و بهبود امکانات مربوط به COM Interop و Generics، زبان سی‌شارپ را به ابزاری انعطاف‌پذیرتر برای توسعه‌دهندگان تبدیل کرد. در ادامه، به بررسی ویژگی‌های کلیدی این نسخه می‌پردازیم:

Dynamic Binding (اتصال دینامیک)

کلیدواژه dynamic یکی از برجسته‌ترین ویژگی‌های C# 4.0 بود. این قابلیت امکان اجرای کدهایی با تایپ پویا (Dynamic Typing) را فراهم کرد، مشابه زبان‌هایی مانند جاوااسکریپت. با استفاده از این ویژگی، تایپ داده‌ها در زمان اجرا تعیین می‌شود، نه در زمان کامپایل.

مثال: استفاده از dynamic

using System;

class Program
{
    static void Main()
    {
        dynamic value = "Hello";
        Console.WriteLine(value); // خروجی: Hello

        value = 42;
        Console.WriteLine(value); // خروجی: 42

        value = value + 8;
        Console.WriteLine(value); // خروجی: 50
    }
}

مزایا:

  • تسهیل کار با زبان‌های دیگر (مانند کدهای COM و JavaScript).
  • انعطاف‌پذیری بیشتر در توسعه.

معایب:

  • احتمال بروز خطا در زمان اجرا به دلیل عدم بررسی تایپ در زمان کامپایل.

Named and Optional Parameters (پارامترهای نام‌گذاری‌شده و اختیاری)

این ویژگی، نوشتن کدهای تمیزتر و خواناتر را برای متدهایی که پارامترهای زیادی دارند، ممکن ساخت. به کمک پارامترهای نام‌گذاری‌شده، می‌توان ترتیب تعریف پارامترها را تغییر داد و با استفاده از پارامترهای اختیاری، نیازی به تعریف همه پارامترها در هر فراخوانی وجود ندارد.

مثال: Named Parameters

class Program
{
    static void PrintDetails(string name, int age, string city)
    {
        Console.WriteLine($"Name: {name}, Age: {age}, City: {city}");
    }

    static void Main()
    {
        PrintDetails(age: 25, name: "Alice", city: "New York");
    }
}

مثال: Optional Parameters

class Program
{
    static void PrintDetails(string name, int age = 30, string city = "Unknown")
    {
        Console.WriteLine($"Name: {name}, Age: {age}, City: {city}");
    }

    static void Main()
    {
        PrintDetails("Bob"); // خروجی: Name: Bob, Age: 30, City: Unknown
    }
}

Generic Covariance and Contravariance (هم‌پوشانی و ضدپوشانی در جنریک‌ها)

این قابلیت، انعطاف‌پذیری بیشتری در استفاده از Generics فراهم کرد. هم‌پوشانی (Covariance) اجازه می‌دهد که یک نوع مشتق‌شده را به جای نوع اصلی استفاده کنید، و ضدپوشانی (Contravariance) برعکس این عمل را امکان‌پذیر می‌سازد.

هم‌پوشانی (Covariance):

IEnumerable strings = new List { "A", "B", "C" };
IEnumerable objects = strings; // هم‌پوشانی

ضدپوشانی (Contravariance):

Action objAction = obj => Console.WriteLine(obj);
Action strAction = objAction; // ضدپوشانی

کاربردها:

  • طراحی کتابخانه‌ها و فریم‌ورک‌های عمومی.
  • تعامل بهتر با انواع داده‌های مشتق‌شده.

Embedded Interop Types (انواع تعبیه‌شده برای ارتباط با COM)

این قابلیت، فرآیند تعامل با کدهای COM را ساده‌تر کرد. به‌جای نیاز به ایجاد Interop Assemblies، می‌توانستید کدهای موردنیاز را مستقیماً در اسمبلی پروژه جاسازی کنید. این ویژگی باعث کاهش پیچیدگی و افزایش قابلیت حمل کدها شد.

قبل از Embedded Interop Types:

توسعه‌دهندگان نیاز به توزیع فایل‌های Interop DLL به همراه برنامه داشتند.

بعد از Embedded Interop Types:

فایل‌های Interop مستقیماً در برنامه جاسازی می‌شوند و نیازی به فایل جداگانه نیست.

مثال ساده:

using Microsoft.Office.Interop.Excel;

class Program
{
    static void Main()
    {
        Application excelApp = new Application();
        excelApp.Visible = true;
    }
}

جمع‌بندی

نسخه C# 4.0، با اضافه کردن ویژگی‌های متنوعی مانند dynamic و پارامترهای اختیاری و نام‌گذاری‌شده، زبان سی‌شارپ را به ابزاری منعطف‌تر و مدرن‌تر تبدیل کرد. این قابلیت‌ها، علاوه بر افزایش خوانایی و کارایی کد، نیازهای برنامه‌نویسان برای تعامل با محیط‌های دیگر را نیز برطرف ساخت.

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
ویژگی‌های جدید C# 6.0

ویژگی‌های جدید C# 6.0

آنچه در این پست میخوانید ویژگی‌های جدید در یک نگاه: Static Imports (وارد کردن استاتیک) Exception Filters (فیلترهای استثنا) Auto-Property…

بیشتر بخوانید
ویژگی‌های جدید C# 5.0

ویژگی‌های جدید C# 5.0

آنچه در این پست میخوانید Asynchronous Members (اعضای غیرهمزمان) Caller Info Attributes (ویژگی‌های اطلاعات فراخوان) تأثیر نسخه C# 5.0 نسخه…

بیشتر بخوانید
ویژگی‌های جدید C# 3.0

ویژگی‌های جدید C# 3.0

آنچه در این پست میخوانید Language-Integrated Query (LINQ) (پرس‌وجوی یکپارچه با زبان) Lambda Expressions (عبارات لامبدا) Auto-Implemented Properties (خصوصیات خودکار…

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.