TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 548 subscribers
Post #75 197
🛡 نجات از NullReferenceException: جادوی اپراتورهای مدرن #C 🪄

تو پست‌های قبلی در مورد null و خطای معروفش 😭 حرف زدیم. حالا وقتشه با سه تا از قوی‌ترین اسلحه‌های #C ⚔️ برای مقابله با این خطا و نوشتن کدهای امن‌تر و خواناتر آشنا بشیم: ?.، ?? و ??=.

این سه اپراتور، جعبه ابزار مدرن شما برای نوشتن کدهای ضد-null هستن.

1️⃣ اپراتور Null-Conditional (?.): امن‌ترین راه دسترسی

این اپراتور که بهش "الویس" هم میگن، مثل یه نگهبان شخصیه 🕵️‍♂️. قبل از اینکه به یه عضو یا متد دسترسی پیدا کنه، چک می‌کنه: "صاحابخونه هست؟ 🤔".

اگه آبجکت null نبود ✅، کارشو انجام میده.

اگه آبجکت null بود ❌، بدون هیچ سر و صدایی 🤫 کل عبارت رو متوقف می‌کنه و null برمی‌گردونه.
StringBuilder sb = null;

// به جای اینکه خطا بده، s برابر با null میشه
string s = sb?.ToString();

// این قابلیت زنجیره‌ای هم هست!
// چون sb نال هست، اصلاً به ToUpper() نمیرسه و خطا نمیده
string upper = sb?.ToString().ToUpper();

تله مهم 🪤: خروجی این عبارت میتونه null باشه، پس باید اون رو در نوعی بریزید که null رو قبول می‌کنه (مثلاً int خالی نمی‌تونه، ولی int? می‌تونه).

2️⃣ اپراتور Null-Coalescing (??): تعیین مقدار پیش‌فرض

این اپراتور، زوج عالی برای ?. هست. منطقش اینه:

"اگه چیزی که سمت چپم هست، null نبود، همونو بده. اگه null بود، این مقدار پیش‌فرض رو بده ✨."

این دوتا با هم یه ترکیب طلایی 🏆 می‌سازن:
StringBuilder sb = null;

// اگه sb نال نبود، ToString() رو برگردون
// اگه نال بود، رشته "Default Value" رو برگردون
string s = sb?.ToString() ?? "Default Value";

Console.WriteLine(s); // خروجی: Default Value


3️⃣ اپراتور Null-Coalescing Assignment (??=)

مقداردهی هوشمند این اپراتور که از 8 #C اضافه شده، یه میانبر خیلی تمیزه. منطقش اینه:

"فقط و فقط اگه متغیر سمت چپم null هست، این مقدار جدید رو بهش اختصاص بده ✍️."
myVariable ??= someDefaultValue;

دقیقاً معادل این کد طولانی‌تره:
if (myVariable == null)
{
myVariable = someDefaultValue;
}


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

این سه اپراتور، جعبه ابزار مدرن شما برای نوشتن کدهای #C تمیز، کوتاه و مقاوم در برابر خطای null هستن.

شما از کدوم یکی از این اپراتورها بیشتر استفاده می‌کنید؟ آیا ترکیب ?. و ?? جزو ترفندهای روزمره شما هست؟


خب، اینجا که نمیشه همه حرفا رو زد! 😉
ادامه‌ی بحث، سوالات، غر زدن‌ها و گپ و گفت‌های خودمونی، فقط تو گروه.
[پاتوق گیک های #C]

🔖 هشتگ‌ها:
#CSharp #Programming #Developer #DotNet #NullHandling #CodingTips #BestPractices
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 →