C# چیست؟
زبان برنامهنویسی شیگرا، مدرن و Strongly Typed مایکروسافت برای ساخت برنامههای وب، دسکتاپ، موبایل و Cloud روی .NET.
چرا مهم است؟
C# زبان اصلی اکوسیستم .NET است؛ تسلط بر Syntax، Type System و OOP آن پیشنیاز یادگیری ASP.NET Core، EF Core و تقریباً هر فناوری دیگر بکاند مایکروسافت است.
تعریف کوتاه
C# زبانی شیگرا، مدرن و Strongly Typed از مایکروسافت است که برای وب، دسکتاپ، موبایل، بازی و سرویسهای Cloud روی پلتفرم .NET استفاده میشود.
ویژگیهای کلیدی
- Object-Oriented — Class، Object، Inheritance، Encapsulation، Polymorphism، Abstraction
- Strongly Typed — نوع متغیرها در Compile Time بررسی میشود و بسیاری از خطاها زودتر پیدا میشوند
int age = 25;
string name = "Ali";
انواع داده (Value vs Reference)
| Value Type | Reference Type |
|---|---|
مقدار واقعی را نگه میدارد (int, double, bool, struct, enum) |
آدرس شیء را نگه میدارد (class, string, array, interface) |
کلاس، شیء و Constructor
class Person
{
public string Name { get; set; }
public Person()
{
Console.WriteLine("Created");
}
}
Person p = new Person { Name = "Ali" };
Access Modifiers
| Modifier | دسترسی |
|---|---|
public |
همهجا |
private |
فقط داخل همان کلاس |
protected |
کلاس و فرزندانش |
internal |
داخل همان Assembly |
چهار اصل OOP
Encapsulation (مخفیکردن جزئیات با Property) · Inheritance (class Dog : Animal) · Polymorphism (Animal a = new Dog();) · Abstraction (abstract class Shape { public abstract void Draw(); })
Interface
interface ILogger
{
void Log(string message);
}
کاربرد اصلی: Dependency Injection، تستنویسی و معماری Clean Architecture.
Exception Handling
try { int x = 10 / 0; }
catch (Exception ex) { Console.WriteLine(ex.Message); }
finally { }
Collections
Array (اندازه ثابت) · List<T> (لیست پویا) · Dictionary<TKey,TValue> (کلید/مقدار)
مفاهیم پیشرفتهتر (هرکدام یک موضوع مستقل)
LINQ برای Query روی Collectionها · Delegate/Lambda برای اشاره به متد و توابع کوتاه · Async/Await برای برنامهنویسی غیرهمزمان · Nullable Types (int? age = null;) · Record برای مدلهای Immutable (public record Person(string Name, int Age);) · Pattern Matching (if (obj is string text) {...})
Garbage Collector
C# دارای Garbage Collector است که Objectهای بدون Reference را شناسایی و حافظهشان را آزاد میکند.
تفاوتهای پرتکرار
| class vs struct | Class روی Heap و Reference Type است؛ Struct معمولاً روی Stack و Value Type و مناسب دادههای کوچک |
| Interface vs Abstract Class | Interface فقط قرارداد است و چند Interface همزمان ممکن است؛ Abstract Class قرارداد + پیادهسازی دارد ولی فقط یک Base Class مجاز است |
| string vs StringBuilder | string Immutable است و هر تغییر یک Object جدید میسازد؛ StringBuilder برای تغییرات زیاد متن مناسبتر است |
نکته کلیدی: C# زبان اصلی اکوسیستم .NET است — پایه یادگیری ASP.NET Core، EF Core و اکثر فناوریهای دیگر همین Syntax، Type System و اصول OOP است.
خلاصه
- C# زبانی شیگرا و Strongly Typed از مایکروسافت برای ساخت انواع برنامه روی .NET است.
- Value Type مقدار را نگه میدارد و روی Stack قرار میگیرد؛ Reference Type آدرس شیء را نگه میدارد و روی Heap است.
- OOP (Encapsulation، Inheritance، Polymorphism، Abstraction)، Interface و Exception Handling ستونهای اصلی نوشتن کد C# هستند.
