‫تبدیل به استرینگ در C#‎

اگر شما هم تا حالا برای ساخت یک استرینگ از استرینگ و عدد در C#‎ از روشی مثل string str = “old” + (2+2).ToString()‎ استفاده می‌کردید، یعنی خودتان زحمت ToString()‎ را می‌کشیدید، دیگر این زحمت را نکشید. چون قانون String Concatenation در C#‎، شرح داده شده در بخش ۷.۸.۴ مشخصات زبانی C#‎، طوری است که اگر بخواهید یک عدد یا هر نوع داده‌ای دیگری مثل DateTime یا کلاس‌های ساخت دست خودتان را به یک استرینگ اضافه کنید، آن عدد یا نوع داده‌ای غیر استرینگ خود به خود به استرینگ تبدیل می‌شود، یعنی .ToString()‎ آن به طور خودکار فراخوانی می‌شود.

این موضوع را وسط یک رفتار عجیب C#‎ پیدا کردم. یک سری کد از قبل داشتم که در آنها یک رشته به یک متغیر از نوع استرینگ می‌چسبید. نوع آن متغیر را بعد از مدتی به یک کلاس ساخت خودم تبدیل کردم و انتظار داشتم کامپایلر C#‎ به آن خط گیر بدهد که نداد. به همین خاطر یک سوال در Stack Overflow پرسیدم و علت را فهمیدم.