بررسی مقادیر بولی تهیپذیر و دستورات شرطی در سی شارپ
نویسنده: وحید نصیری
تاریخ: ۱۴۰۴/۰۲/۲۷ ۰۷:۵۳
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
bool? یا Nullable برای تعریف متغیرهای بولی (Boolean) استفاده میشود که میتوانند سه مقدار داشته باشند: true (درست)، false (غلط) و null (تهی). این ویژگی زمانی کاربرد دارد که نیاز به نمایش عدم قطعیت یا مقدار نامشخص برای یک مقدار بولی داشته باشیم. مقاله اصلی که در اختیار دارید، به بررسی روشهای مختلف استفاده از مقادیر بولی تهیپذیر در دستورات شرطی (if) در سی شارپ میپردازد و به این سوال پاسخ میدهد که آیا تفاوتی بین این روشها وجود دارد یا خیر.truebool? برابر با true است وجود دارد. دو روش رایج عبارتند از:if (FooBar() == true)if (FooBar() ?? false)FooBar() تابعی است که یک مقدار bool? برمیگرداند. روش اول، مقدار برگشتی تابع را مستقیماً با true مقایسه میکند. روش دوم از عملگر ادغام تهی (??) استفاده میکند. این عملگر، مقدار سمت چپ خود را برمیگرداند اگر تهی نباشد؛ در غیر این صورت، مقدار سمت راست خود را برمیگرداند. در این مورد، اگر FooBar() مقدار null برگرداند، عملگر ?? مقدار false را برمیگرداند.??) را ترجیح میدهد، زیرا به نظر او خوانایی کد را افزایش میدهد.??)??) یک عملگر دودویی است که در سی شارپ برای سادهسازی مدیریت مقادیر تهی استفاده میشود. این عملگر، مقدار سمت چپ خود را برمیگرداند اگر تهی نباشد؛ در غیر این صورت، مقدار سمت راست خود را برمیگرداند. به عنوان مثال:int? x = null; int y = x ?? -1; // y برابر با -1 خواهد بود
x مقدار null داشته باشد، y برابر با -1 خواهد شد. در غیر این صورت، y برابر با مقدار x خواهد بود. GetValueOrDefault()GetValueOrDefault() است. این متد، مقدار متغیر bool? را برمیگرداند اگر مقدار داشته باشد؛ در غیر این صورت، مقدار پیشفرض نوع bool (یعنی false) را برمیگرداند. این متد، یک نسخه اضافه بارگذاری شده نیز دارد که به شما امکان میدهد یک مقدار پیشفرض سفارشی را مشخص کنید.bool? flag = null; bool result = flag.GetValueOrDefault(true); // result برابر با true خواهد بود
true بودن یک متغیر bool? در دستورات شرطی، هم میتوان از مقایسه مستقیم با true و هم از عملگر ادغام تهی (??) استفاده کرد. از نظر عملکرد، تفاوتی بین این دو روش وجود ندارد و انتخاب بین آنها به سلیقه شخصی بستگی دارد. عملگر ادغام تهی (??) و متد GetValueOrDefault() ابزارهای قدرتمندی برای مدیریت مقادیر تهی در سی شارپ هستند و به افزایش خوانایی و کاهش پیچیدگی کد کمک میکنند.