TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2337 1.31K
رابط (Interface) در سی‌شارپ

#csharp_for_beginners

تعریف و کاربرد
کلمه کلیدی interface برای تعریف یک قرارداد به کار می‌رود. این قرارداد مجموعه‌ای از امضاهای اعضا را مشخص می‌کند که می‌تواند شامل متدها، ویژگی‌ها، ایندکسرها، رویدادها و غیره باشد.
یک interface می‌تواند اعضایی بدون پیاده‌سازی یا اعضایی با پیاده‌سازی پیش‌فرض داشته باشد. همچنین امکان تعریف اعضای static نیز وجود دارد.

از نسخه سی‌شارپ ۱۱ به بعد interface می‌تواند اعضای static abstract یا static virtual داشته باشد. این موضوع زمانی مفید است که بخواهیم در یک نوع عمومی (generic) رفتار مشخصی برای تمام انواع پیاده‌ساز اجباری کنیم. به عنوان مثال در کتابخانه دات‌نت انواع عددی مختلف واسط INumber را پیاده می‌کنند تا عملیات ریاضی مشترک میان آنها تضمین شود.

قوانین دسترسی و سطح تعریف
یک interface سطح بالا (در فضای نام) می‌تواند internal یا public باشد. پیش‌فرض internal است.
اگر interface به صورت تو در تو داخل یک نوع دیگر تعریف شود می‌توان از هر نوع اصلاح‌کننده دسترسی استفاده کرد.
اعضای interface که بدون پیاده‌سازی هستند اصلاح‌کننده دسترسی ندارند. اما اگر برای آن عضو پیاده‌سازی پیش‌فرض بنویسیم می‌توان دسترسی آن را مشخص کرد.


انواع اعضا در interface
یک interface می‌تواند شامل موارد زیر باشد:
-متدها
-ویژگی‌ها
-ایندکسرها
-رویدادها
-ثابت‌ها
-عملگرها
-انواع تو در تو
-سازنده ایستا

پیاده‌سازی
یک interface می‌تواند از یک یا چند interface دیگر مشتق شود. هر نوعی که interface مشتق را پیاده کند باید تمام اعضای interfaceهای پایه و مشتق را پیاده‌سازی کند.
کلاس یا ساختار می‌تواند اعضای interface را به صورت ضمنی یا به صورت صریح (explicit implementation) پیاده کند.
اگر یک عضو interface پیاده‌سازی پیش‌فرض داشته باشد معمولاً تنها از طریق نمونه‌ای از نوع interface قابل دسترسی است نه مستقیماً از طریق کلاس پیاده‌ساز.

مثال‌ها

تعریف یک قرارداد ساده

interface ISampleInterface
{
void SampleMethod();
}

class ImplementationClass : ISampleInterface
{
void ISampleInterface.SampleMethod()
{
// پیاده‌سازی متد
}
}


تعریف ویژگی‌ها و متدها

interface IPoint
{
int X { get; set; }
int Y { get; set; }
double Distance { get; }
}

class Point : IPoint
{
public int X { get; set; }
public int Y { get; set; }
public double Distance => Math.Sqrt(X * X + Y * Y);
}



🔗 مطلب کامل را در این لینک می‌توانید مطالعه کنید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

کانال تلگرام:
@SoftwarePhilosophy

______
Docs interface keyword - C# reference Use the `interface` keyword to define contracts that any implementing type must support. Interfaces provide the means to create common behavior among a set of unrelated types.
  • 👍 2
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →