TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #54 120
✨ ساختن رشته‌ها در #C :
+ در برابر $ (الحاق یا درون‌یابی؟)

همه‌ی ما یه زمانی اینجوری رشته می‌ساختیم:
 string s = "User: " + name + " | Age: " + age;

این کد کار می‌کنه، ولی آیا بهترین، خواناترین و بهینه‌ترین راهه؟

بیاید دو روش اصلی ساختن رشته در سی‌‌شارپ رو با تمام جزئیاتشون کالبدشکافی کنیم و ببینیم کی باید از کدوم استفاده کرد.

🔗 روش سنتی: الحاق با + و تله‌ی پرفورمنس
این ساده‌ترین روشه. اپراتور + دو تا رشته رو به هم می‌چسبونه. اگه یکی از مقادیر رشته نباشه، #C به صورت خودکار متد ()ToString رو روش صدا می‌زنه.

string s = "User ID: " + 5; // خروجی: "User ID: 5"


اما تله بزرگ کجاست؟
یادتونه تو پست "رازهای string" گفتیم که stringها تغییرناپذیر (Immutable) هستن؟ این یعنی هر بار که از + استفاده می‌کنید، #C یه رشته کاملاً جدید در حافظه میسازه و قبلی‌ها رو دور می‌ریزه.

اگه این کار رو تو یه حلقه انجام بدید، دارید رسماً حافظه رو به آتیش می‌کشید و برنامه‌تون رو به شدت کند می‌کنید!

راه حل حرفه‌ای (برای موارد پیچیده)

برای ساختن رشته‌های داینامیک در حلقه‌ها، همیشه از کلاس System.Text.StringBuilder استفاده کنید که بعداً مفصل در موردش صحبت می‌کنیم.

💲 روش مدرن و حرفه‌ای: درون‌یابی با $ (String Interpolation)
این روش که با گذاشتن $ قبل از رشته فعال میشه، خواناترین و قدرتمندترین راه برای ساختن رشته‌هاست. شما می‌تونید متغیرها و عبارات #C رو مستقیم داخل رشته و بین آکولاد {} بنویسید.

int x = 4;
Console.WriteLine($"A square has {x} sides."); // خروجی: A square has 4 sides


قدرت‌های پنهان درون‌یابی:

فرمت‌دهی 🎨: می‌تونید خروجی رو همونجا با گذاشتن : و یه "فرمت استرینگ" کنترل کنید. مثلاً برای نمایش عدد در مبنای هگزادسیمال:

string s = $"255 in hex is {byte.MaxValue:X2}"; // X2 یعنی هگزادسیمال با ۲ رقم
// خروجی: "255 in hex is FF"

عبارات پیچیده 🤯: اگه عبارتتون پیچیده‌ست
یا خودش : داره (مثل اپراتور سه‌تایی)، کل عبارت رو داخل پرانتز بذارید:

bool b = true;
Console.WriteLine($"The answer is {(b ? 1 : 0)}");


رشته‌های ثابت (از C# 10) 💎: اگه تمام مقادیر داخل $ ثابت باشن، خود رشته هم می‌تونه const باشه:

const string greeting = "Hello";
const string message = $"{greeting}, world";


رشته‌های چند خطی (از C# 11) 📄: رشته‌های درون‌یابی می‌تونن چند خطی هم باشن که کار رو خیلی راحت‌تر می‌کنه:

string s = $"This interpolation spans {1 + 1} lines";


🤔 حرف حساب و انتخاب شما
برای چسبوندن دو یا سه تا رشته ساده ⟵ + کار راه اندازه.

برای هر حالت دیگه‌ای، به خصوص وقتی متغیرها رو داخل رشته میارید ⟵ $ (درون‌یابی) انتخاب اول و آخر شماست. خوانا، قدرتمند و مدرن.

شما تو کدهاتون بیشتر از کدوم روش استفاده می‌کنید؟ آیا تا حالا با مشکل پرفورمنس به خاطر استفاده زیاد از + تو حلقه‌ها برخورد کردید؟ یا چه ترفند باحالی برای فرمت کردن رشته‌ها با $ بلدید؟

🔖 هشتگ‌ها :
#CSharp
#String
#DotNet
#Performance
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 →