C# یک زبان برنامهنویسی مدرن و چندپارادایمی است که توسط مایکروسافت در چارچوب .NET خود توسعه یافته است. این زبان عمدتاً برای توسعه نرمافزار برای ویندوز و برنامههای وب طراحی شده و ترکیبی از نوعدهی قوی، ویژگیهای برنامهنویسی دستوری و شیگرا (OOP) را با قابلیتهای برنامهنویسی تابعی ارائه میدهد. C# به خاطر خوانایی، انعطافپذیری و پشتیبانی قوی از توسعه شناخته شده است و به ویژه در کنار موتور بازیسازی Unity، مورد توجه توسعهدهندگان سازمانی و برنامهنویسان بازی قرار دارد.
C# در اوایل دهه 2000 توسط آندرس هایلسبرگ و تیمش در مایکروسافت به عنوان بخشی از ابتکار .NET ایجاد شد. این زبان به منظور افزایش بهرهوری با ارائه یک زبان برنامهنویسی شیگرا، ساده و مدرن طراحی شده است که به خوبی با اکوسیستم مایکروسافت ادغام میشود. تأثیر زبانهای قبلی مانند جاوا و C++ در ساختار آن مشهود است.
نسخههای اولیه C# به شدت با چارچوب .NET مرتبط بودند که هدف آن ارائه مجموعهای جامع از کتابخانهها و ابزارها برای ساخت برنامهها بود. نسخه 1.0 C# در کنار چارچوب .NET در سال 2002 منتشر شد. در طول سالها، ویژگیها و بهبودهای اضافی پیادهسازی شده و C# از طریق نسخههای مختلف به طور قابل توجهی تکامل یافته است.
انتشار .NET Core در سال 2016 یک نقطه عطف مهم بود که C# را چندسکویی کرده و انعطافپذیری آن را افزایش داد. نسخههای بعدی، از جمله C# 7.0 و بالاتر، ویژگیهایی مانند تاپلها، تطابق الگو و جریانهای غیرهمزمان را معرفی کردند که زبان را بیشتر بهبود بخشیدند. امروزه، C# در خط مقدم توسعه نرمافزار مدرن قرار دارد و از یک جامعه پویا و بهروزرسانیهای مداوم در اکوسیستم .NET پشتیبانی میشود.
C# یک زبان با نوعدهی استاتیک است، به این معنی که نوع متغیرها در زمان کامپایل مشخص است. این ویژگی عملکرد را بهبود میبخشد و از بروز برخی از خطاهای زمان اجرا جلوگیری میکند.
int number = 10;
string text = "Hello, C#";
C# به طور کامل از مفاهیم OOP پشتیبانی میکند و به توسعهدهندگان اجازه میدهد کلاسها و اشیاء ایجاد کنند، دادهها را کپسوله کنند و از وراثت و چندشکلی استفاده کنند.
class Animal {
public void Speak() {
Console.WriteLine("Animal speaks");
}
}
class Dog : Animal {
public void Speak() {
Console.WriteLine("Dog barks");
}
}
C# اجازه استفاده از ویژگیها را میدهد که کپسولهسازی بهتری از دادههای کلاس را فراهم میکند در حالی که دسترسی آسان برای دریافت و تنظیم مقادیر را حفظ میکند.
class Person {
private string name;
public string Name {
get { return name; }
set { name = value; }
}
}
C# از نمایندگان، که اشارهگرهای تابع نوعامن هستند، و رویدادها برای پیادهسازی برنامهنویسی مبتنی بر رویداد پشتیبانی میکند.
public delegate void Notify(); // Delegate
public class Process {
public event Notify ProcessCompleted; // Event
public void StartProcess() {
// Process logic
ProcessCompleted?.Invoke(); // Raise event
}
}
C# LINQ را ارائه میدهد، یک ویژگی قدرتمند که اجازه میدهد مجموعهها را به صورت مختصر و خوانا پرسوجو کنید.
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = from n in numbers where n % 2 == 0 select n;
C# برنامهنویسی غیرهمزمان را با استفاده از کلیدواژههای async و await ساده میکند و عملکرد را برای وظایف وابسته به I/O بهبود میبخشد.
public async Task<string> GetDataAsync() {
using (var client = new HttpClient()) {
return await client.GetStringAsync("http://example.com");
}
}
متدهای گسترش به توسعهدهندگان اجازه میدهند تا "متدهای جدیدی" به انواع موجود اضافه کنند بدون اینکه کد منبع آنها را تغییر دهند.
public static class MyExtensions {
public static int WordCount(this string str) {
return str.Split(' ').Length;
}
}
C# از نوعهای قابلنقض پشتیبانی میکند که اجازه میدهد دادههایی که ممکن است غایب باشند، نمایان شوند.
int? nullableInt = null;
C# پشتیبانی داخلی از تاپلها را فراهم میکند که اجازه کپسولهسازی چندین مقدار را میدهد.
var person = (Name: "John", Age: 30);
Console.WriteLine($"{person.Name} is {person.Age} years old.");
.NET SDK مجموعه ابزار اصلی برای توسعه برنامهها در C# است. این شامل CLR (زمان اجرای زبان مشترک)، کتابخانهها و کامپایلرهای لازم برای اجرای کد C# است.
Visual Studio IDE اصلی برای توسعه C# است که اشکالزدایی پیشرفته، IntelliSense و یک محیط یکپارچه برای ساخت و استقرار برنامهها را فراهم میکند. گزینههای محبوب دیگر شامل JetBrains Rider و Visual Studio Code است که با افزونههای مناسب میتوانند برای توسعه C# سازگار شوند.
برای ساخت یک پروژه C# با استفاده از .NET CLI، میتوان از دستوراتی مانند dotnet new
برای ایجاد یک پروژه جدید، dotnet build
برای کامپایل کد و dotnet run
برای اجرای برنامه استفاده کرد. فرآیند ایجاد یک برنامه کنسولی به این صورت خواهد بود:
dotnet new console -n MyConsoleApp
cd MyConsoleApp
dotnet run
C# در طیف وسیعی از برنامهها مورد استفاده قرار میگیرد، از جمله:
C# به عنوان یک زبان قدرتمند در مقایسه با دیگر زبانها قرار دارد. در اینجا برخی از شباهتها و تفاوتهای قابل توجه آورده شده است:
ترجمه کد بین C# و زبانهای دیگر معمولاً با استفاده از ابزارهای ترجمه کد به کد، که به طور معمول به آنها transpiler گفته میشود، تسهیل میشود. به عنوان مثال، ابزارهایی مانند SharpKit میتوانند کد C# را به جاوااسکریپت برای برنامههای وب تبدیل کنند، در حالی که Bridge.NET اجازه میدهد C# به برنامههای جاوااسکریپت یا HTML5 کامپایل شود.
در سناریوهای خاصتر، کتابخانهها و ابزارهایی که C# را به زبانهای دیگر مانند جاوا یا پایتون تبدیل میکنند وجود دارند که معمولاً بر ویژگیها و پارادایمهای خاص زبان تمرکز میکنند تا فرآیند تبدیل مؤثری را تضمین کنند.
به عنوان مثال، هنگام ترجمه از C# به پایتون، توسعهدهنده باید مراقب باشد تا سیستم نوع و شیوههای مدیریت حافظه را تطبیق دهد، زیرا نوعدهی پویا و اصول جمعآوری زباله در پایتون با نوعدهی استاتیک و زمان اجرای مدیریت شده C# متفاوت است.
ابزارهای موجود که تسهیلکننده ترجمههای مختلف کد هستند شامل CodePorting برای تبدیل برنامههای .NET به جاوا و Jitterbit برای راهحلهای یکپارچهسازی گستردهتر است. هر ابزار نقاط قوت خاص خود را دارد و انتخاب آن بستگی به جزئیات پروژه و نتایج مورد نظر دارد.