در حوزه برنامه نویسی، مقادیر 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
______