TGViewer
Software Philosophy Software Philosophy @softwarephilosophy · 3.48K subscribers
Post #2226 3.17K
حفاظت در برابر مقادیر null!

در حوزه برنامه نویسی، مقادیر null مانند مین‌های پنهانی هستند که منتظر انفجار می‌باشند و باعث خطاهای غیرمنتظره در زمان اجرا می‌شوند، منجر به منطق نادرست می‌شوند و اشکال زدایی را سخت‌تر می‌کنند. این یکی از رایج‌ترین مشکلاتی است که توسعه‌دهندگان با آن مواجه هستند، NullReferenceException مخوف است. به همین دلیل مهم است که قبل از استفاده از یک object reference در کد، مقادیر null را بررسی کنید.


بررسی null بطور سنتی با == اپراتور


یک راه برای انجام این کار استفاده از عملگر == است که دو operands را برای برابری مقایسه می‌کند.
برای مثال می‌توانید بنویسید:

var product = GetProduct();
if (product == null) {
// Do something if the object is null.
}


این رویکرد دارای معایبی است. عملگر == می‌تواند توسط یک کلاس overload شود، به این معنی که ممکن است هنگام مقایسه یک شی با null، آنطور که انتظار دارید رفتار نکند. برای مثال، اگر کلاس یک عملگر برابری سفارشی را تعریف کند که همیشه true را برمی‌گرداند، آنگاه بررسی null همیشه ناموفق خواهد بود.

استفاده از عملگر is

برای جلوگیری از این مشکلات، سی شارپ راه بهتری برای بررسی مقادیر null ارائه می دهد: عملگر is.
عملگر is یک عملیات pattern-matching را روی یک عبارت انجام می‌دهد و اگر با یک الگوی مشخص مطابقت داشته باشد، مقدار true را برمی‌گرداند.

var product = GetProduct();
if (product is null) {
// Do something if the object is null.
}

این روش چند مزیت دارد:
- اولاً، عملگر is نمی‌تواند توسط یک کلاس overload شود، بنابراین هنگام بررسی مقادیر تهی، همیشه به طور مداوم رفتار می‌کند.
- دوم، عملگر is خواناتر و رساتر از عملگر == است، زیرا به وضوح بیان می‌کند که چه چیزی را بررسی می‌کنید.
- سوم، عملگر is از negation patterns پشتیبانی می‌کند که به شما امکان می‌دهد مقادیر غیر تهی را نیز بررسی کنید.

🔗 نسخه کامل مقاله به همراه نمونه کد را می‌توانید در اینجا مطالعه نمایید.

⁉️ برای بحث و تبادل نظر فنی در مورد این پست، نظرات خود را با ما در قسمت کامنت‌ها به اشتراک بگذارید.

#محمدرضا_پازوکی (لینکدین)

کانال تلگرام:
@SoftwarePhilosophy

______
DEV Community Guard against null values In the realm of programming, null values are like hidden landmines waiting to explode and cause...
  • 👍 35
  • 👏 2
More from @softwarephilosophy
  1. Sep 27, 2026نگو JEV بگو System One! دنیل کانمن (Daniel Kahneman) توی کتاب معروفش «تفکر، سریع و کند» (T…
  2. Sep 23, 2026بازنویسی کل GitHub Copilot Runtime با Rust 🔶 حدود ۱۲۰،۰۰۰ دلار هزینه توکن و سه هفته وقت ی…
  3. Sep 15, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  4. Sep 12, 2026کد مدریت شده (Managed Code) در دات‌نت یعنی چی؟ ▫️به زبان ساده: کد مدریت شده (Managed Code)…
  5. Sep 5, 2026آشنایی با Attributeها در سی‌شارپ در سی شارپ، Attributeها برای اضافه کردن metadata یا اطلاع…
  6. Aug 25, 2026اگر در دات نت Agent، MCP Server یا ابزارهای مبتنی بر هوش مصنوعی توسعه میدهی، این پروژه میت…
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 →