با عرض سلام و وقت بخیر خدمت کاربران سایت پی وی لرن . و کاربرانی که دوره کامل آموزش #c ، را دنبال می کنند. در بخش قبل با دستورات شرطی if else و نحوه استفاده از آنها آشنا شدید.
در این بخش شما را به عملگرهای ternary در سی شارپ که شکلی دیگر از دستورات شرطی هستند آشنا می کنیم. در زبان #C نوع خاصی از دستورات شرطی به نام عملگرهای سه جانبه وجود دارد که میتوان در برخی موارد بجای دستورات شرطی از آنها استفاده کرد.
ساختار کلی این دستورات در زیر آمده است:
Boolean Expression ? First Statement : Second Statement
همانگونه که می توانید در بالا مشاهده کنید، عملگر سه جانبه شامل سه بخش است. بخش اول (?before) شامل عبارت شرطی است که مقدار منطقی true یا false را برمیگرداند.
بخش دوم (:after ? and before) حاوی عبارتی است که اگر شرط درست باشد برگردانده می شود.
بخش سوم شامل عبارتی دیگر است که اگر شرط درست نباشد برگردانده خواهد شد.
نکته : عملگرهای سه جانبه در بخش دوم یا سوم خود فقط خروجی را بازمی گردانند و کدی را اجراء نمی کنند.
مثال زیر را در نظر بگیرید که شرط x>y را بررسی کرده و پس از آن خروجی بخش اول را بازمیگرداند.
1 2 3 4 5 | int x = 20, y = 10; var result = x > y ? "x is greater than y" : "x is less than or equal to y"; Console.WriteLine(result); |
1 | x is greater than y |
عملگرهای سه جانبه میتوانند مقدار متغیرها را برگردانند به مثال زیر دقت کنید:
1 2 3 4 5 | int x = 20, y = 10; var result = x > y ? x : y; Console.WriteLine(result); |
1 | 20 |
اگر بخواهیم کدهای بالا را با استفاده از دستور شرطی if else بازنویسی کنیم به صورت زیر خواهیم داشت:
1 2 3 4 5 6 7 8 9 | int x = 20, y = 10; int result = 0; if (x > y) result = x; else if (x < y) result = y; Console.WriteLine(result); |
1 | 20 |
مانند دستور شرطی else if ، عملگرهای سه جانبه نیز میتوانند دارای ساختار else if باشند، به کدهای زیر دقت کتید:
1 2 3 4 5 | int x = 20, y = 10; string result = x > y ? "x is greater than y" : x < y ? "x is less than y" : x == y ? "x is equal to y" : "No result"; |
1 | x is greater than y |
این عملگرها میتوان بصورت تودرتو نیز استفاده کرد ساختار به شکل زیر است
a ? (c ? d : e) : b
به مثال زیر توجه کنید:
1 2 3 4 5 6 | int x = 10, y = 2, a = 4 , b = 13; string result = x > y ? (a>b ? "x is greater than y and b is greater than a" : "x is greater than y but a not greater than b") : x < y ? "x is less than y" : x == y ? "x is equal to y" : "No result"; Console.WriteLine(result); |
1 | x is greater than y but a not greater than b |
در این قسمت با عملگرهای سه گانه آشنا شدید و گفتیم که چگونه می توان آنها را جایگزین دستورات شرطی if else کوچک کرد.
در قسمت بعد شما را دستور شرطی switch case آشنا خواهیم کرد.
یکتا
با عرض سلام و خسته نباشید
در بخش ساختار else if در عملگرهای سه جانبه در قسمت مثال int x = 2, y = 10; نوشته اید
x را شما ۲ گذاشتید در صورتی که بنا به خروجی باید ۲۰ باشد
ممنون از سایت و آموزشهای خوبتون
صادق
سلام
بله حق با شماست. اصلاح شد.
ممنون از اطلاع رسانیتون