TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #65 95
📤 ابزار حرفه‌ای #C :
بازگرداندن چند مقدار از متد با out

تا حالا شده بخوای یه متد بنویسی که بیشتر از یه مقدار رو برگردونه؟ مثلاً هم نتیجه عملیات و هم یه پیام وضعیت؟ تو #C برای این کار یه ابزار فوق‌العاده داریم:
کلمه کلیدی out.


این کلمه کلیدی به شما اجازه میده پارامترهایی تعریف کنید که مقدارشون از داخل متد به بیرون منتقل میشه.

این out چیست و چه فرقی با ref داره؟

کلمه کلیدی out هم مثل ref، پارامتر رو بر اساس رفرنس پاس میده (یعنی آدرس حافظه رو میفرسته). اما دو تا قانون مهم و متفاوت داره:

1️⃣نیازی نیست قبل از متد مقداردهی بشه: شما می‌تونید یه متغیر تعریف نشده رو به یه پارامتر out پاس بدید.

2️⃣حتماً باید داخل متد مقداردهی بشه: متد موظفه که قبل از تموم شدن، یه مقداری رو تو اون پارامتر بریزه. این قانون توسط کامپایلر چک میشه.

کاربرد اصلی: بازگرداندن چند مقدار
بهترین کاربرد out، زمانیه که می‌خواید از یک متد، چند مقدار خروجی بگیرید.

مثال: فرض کنید می‌خوایم یه متد بنویسیم که اسم کامل رو بگیره و اسم کوچک و فامیل رو جدا کنه.
void Split(string fullName, out string firstName, out string lastName)
{
int i = fullName.LastIndexOf(' ');
// متد موظفه هر دو پارامتر out رو مقداردهی کنه
firstName = fullName.Substring(0, i);
lastName = fullName.Substring(i + 1);
}

// --- نحوه استفاده ---
string fName, lName; // لازم نیست مقدار اولیه داشته باشن

Split("Stevie Ray Vaughan", out fName, out lName);

Console.WriteLine(fName); // خروجی: Stevie Ray
Console.WriteLine(lName); // خروجی: Vaughn


ترفندهای مدرن: out variables و Discards (_) ✨


برای راحت‌تر شدن کار، #C دو تا قابلیت باحال برای out اضافه کرده:

1️⃣تعریف متغیر در لحظه (Out Variables):
لازم نیست متغیر رو از قبل تعریف کنید! می‌تونید همونجا موقع صدا زدن متد، تعریفش کنید:
Split("Stevie Ray Vaughan", out string firstName, out string lastName);
Console.WriteLine(lastName); // Vaughan


2️⃣نادیده گرفتن خروجی (Discards):
اگه به یکی از خروجی‌ها نیاز ندارید، می‌تونید با یه آندرلاین (_) اون رو نادیده بگیرید تا کدتون تمیزتر بشه:
// ما اینجا فقط به اسم کوچک نیاز داریم
Split("Stevie Ray Vaughan", out string fName, out _);
Console.WriteLine(fName); // Stevie Ray


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

این out یکی از پرکاربردترین کلمات کلیدی در کتابخانه‌های دات‌نته (مثلاً متد معروف int.TryParse). بلد بودنش خیلی به کارتون میاد.

شما بیشتر کجا از out استفاده کردید؟ آیا از قابلیت تعریف متغیر همزمان یا Discard خبر داشتید؟

نظراتتون رو کامنت کنید! 👇
[C# Geeks Hangout]

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