C# چیست؟
C# یک زبان برنامهنویسی مدرن، شیءگرا و چندمنظوره است که توسط مایکروسافت به عنوان بخشی از .NET Framework توسعه داده شده است. این زبان تحت هدایت آندرس هجلزبرگ (Anders Hejlsberg) ایجاد شد و اولین بار در سال 2000 معرفی شد. هدف از ایجاد C# ارائه زبانی قدرتمند، انعطافپذیر و ایمن برای توسعهدهندگان بود که بتوانند برنامههای کاربردی مدرن را به راحتی و با کارایی بالا توسعه دهند.
فلسفه به وجود آمدن C#
C# با اهداف و فلسفههای خاصی طراحی و توسعه یافت:
- سادگی و راحتی استفاده: یکی از اهداف اصلی C# سادهسازی فرآیند توسعه نرمافزار بود. این زبان سعی کرده است که از پیچیدگیهای موجود در برخی زبانهای دیگر کاسته و ویژگیهایی ارائه دهد که توسعهدهندگان را در نوشتن کدهای خوانا و نگهداری آسانتر یاری کند.
- ایمنی و امنیت: C# به شدت بر ایمنی نوع (type safety) تاکید دارد تا از خطاهای زمان اجرا و آسیبپذیریهای امنیتی جلوگیری کند. ویژگیهایی مانند مدیریت خودکار حافظه (garbage collection) و بررسیهای زمان کامپایل (compile-time checks) این اهداف را محقق میکنند.
- کارایی و عملکرد: C# طراحی شده است تا بهینهسازیهای مختلفی را فراهم کند که باعث افزایش عملکرد برنامهها میشوند. این زبان به گونهای طراحی شده که توسعهدهندگان بتوانند از تمامی امکانات سختافزاری موجود بهرهبرداری کنند.
- مدرنیته و انعطافپذیری: با توجه به تغییرات سریع تکنولوژی و نیازهای توسعهدهندگان، C# به گونهای طراحی شده که به راحتی قابلیت ارتقاء و افزودن ویژگیهای جدید را داشته باشد.
- پشتیبانی از توسعه تحت پلتفرمهای مختلف: با معرفی .NET Core و سپس .NET 5 و نسخههای بعدی، C# قابلیت اجرای برنامهها روی سیستمعاملهای مختلف مانند ویندوز، لینوکس و macOS را دارا شده است.
آخرین نسخه حال حاضر C#
تا تاریخ دانش من (جولای 2023)، آخرین نسخه رسمی C#، نسخه 11 است. البته، برای اطلاع از آخرین نسخه دقیق، بهتر است به منابع رسمی مایکروسافت مراجعه کنید.
ویژگیهای کلیدی آخرین نسخه C#
ویژگیهای زیر نمونههایی از قابلیتهای جدیدی هستند که در نسخههای اخیر C# اضافه شدهاند:
- Records: نوع جدیدی برای تعریف کلاسهای دادهمحور (immutable data classes).
public record Person(string FirstName, string LastName);
- Top-level statements: نوشتن برنامههای سادهتر بدون نیاز به تعریف صریح کلاس و متد Main.
Console.WriteLine("Hello, World!");
- Pattern matching enhancements: بهبود قابلیتهای تطابق الگو، شامل switch expressions و property patterns.
if (person is { FirstName: "John", LastName: "Doe" })
{
// Do something
}
- Nullable reference types: قابلیت جدید برای جلوگیری از null reference exceptions با استفاده از نشانهگذاری نالپذیر.
string? nullableString = null;
- Async streams: پشتیبانی از بازگشت دادهها به صورت غیرهمزمان با استفاده از IAsyncEnumerable<T>.
await foreach (var item in GetItemsAsync())
{
Console.WriteLine(item);
}
- Init-only properties: امکان تعریف ویژگیهای فقط برای مقداردهی اولیه.
public class Person
{
public string FirstName { get; init; }
public string LastName { get; init; }
}
- Record structs: نوعی struct که ویژگیهای مشابهی با records دارند.
public readonly record struct Point(int X, int Y);
- Enhanced interpolated strings: بهبود در رشتههای interpolated برای انجام عملیاتهای پیچیدهتر.
var name = "World";
var message = $"Hello, {name.ToUpper()}!";