TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 549 subscribers
Post #242 94
📖 سری آموزشی کتاب C# 12 in a Nutshell

🖨 چاپ زیبا با ()ToString: معرفی کردن آبجکت‌های شما به دنیا

تا حالا شده یه آبجکت از کلاس خودتون رو Console.WriteLine کنید و با یه خروجی بی‌معنی مثل MyProject.Panda مواجه بشید؟ 😑

راه حل این مشکل، بازنویسی (override) کردن یکی از مهم‌ترین متدهای کلاس object یعنی ToStringهست.

1️⃣ ToString() چیست و چرا مهمه؟

ToString()
یه متد virtual در کلاس System.Object هست. وظیفه‌ش اینه که یه نمایش متنی و خوانا از آبجکت شما برگردونه. این متد به خصوص موقع دیباگ کردن و لاگ انداختن فوق‌العاده به درد می‌خوره، چون به شما اجازه میده وضعیت داخلی آبجکت رو به راحتی ببینید.

2️⃣ چطور ToString رو بازنویسی (Override) کنیم؟

کافیه تو کلاس خودتون، متد ToString رو override کنید و هر رشته‌ای که دوست دارید و وضعیت آبجکت رو بهتر توصیف می‌کنه، برگردونید.
public class Panda
{
public string Name;
// بازنویسی متد ToString
public override string ToString() => Name;
}
// --- نحوه استفاده ---
Panda p = new Panda { Name = "Petey" };

// Console.WriteLine به صورت خودکار ToString() رو روی آبجکت‌ها صدا میزنه
Console.WriteLine(p);

// خروجی:
// Petey

اگه ToString رو بازنویسی نکنید، خروجی پیش‌فرض، اسم کامل تایپ خواهد بود.


3️⃣ نکته فنی: ToString و تله‌ی Boxing ⚠️

یه نکته خیلی مهم در مورد پرفورمنس: وقتی ToString رو مستقیماً روی یه Value Type (مثل int) صدا می‌زنید، هیچ عمل Boxing اتفاق نمیفته. Boxing (که هزینه پرفورمنس داره) فقط زمانی رخ میده که شما اول اون Value Type رو به object کست کنید.
int x = 1;
// ✅ بدون Boxing: بهینه و سریع
string s1 = x.ToString();

// ❌ با Boxing: هزینه پرفورمنس داره
object box = x;
string s2 = box.ToString();


🤔 حرف حساب و تجربه شما

عادت کردن به override کردن ToString در تمام کلاس‌هاتون، یکی از بهترین کارهاییه که می‌تونید برای خودتون (و هم‌تیمی‌هاتون در آینده) انجام بدید.

🔖 هشتگ‌ها:
#DotNet #OOP #ToString
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
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 →