ITSI.IR – سی شارپ حاوی عملگر شرطی :؟ است که قرابت نزدیکی با عبارت if..else دارد . عملگر شرطی در C# تنها عملگر temary است ، به این معنی که سه عملوند دریافت می کند . عملوند ها به همراه عملگر شرطی تشکیل عبارت شرطی را می دهند . عملوند اول نشان دهنده شرط میباشد ، عملوند دوم مقداری است که در صورت true بودن شرط انتخاب می شوند و عملوند سوم مقداری است که در صورت برقرار نبودن شرط یا false بودن آن انتخاب می شود . برای مثال به عبارت زیر توجه کنید :

حاوی یک عبارت شرطی است که در صورت برقرار بودن شرط grade >=60 رشته “passed” ارزیابی می شود ، اما اگر شرط برقرار نباشد ، رشته “Failed” بکار گرفته خواهد شد ، از این رو عملکرد این عبارت شرطی دقیقا همانند عبارت if..else قبلی است . عملگر شرطی از تقدم پذیری پایین تری برخوردار است و از این رو معمولا کل عبارت شرطی را در درون پرانتز ها قرار می دهند .

عبارت تو در توی if..else
عبارت تو در تو با متداخل if..else برای تست چندین شرط با قرار دادن عبارت های if..else در دورن عبارت های if..else دیگر است . برای مثال ، عبارت شبه کد زیر ، حرف “A” را برای نمره های بزرگتر یا برابر ۹۰ ، “B” را برای نمره های در محدوده ی ۸۰-۸۹ ، C را برای نمره های در محدوده ی ۷۰-۷۹ ، D را برای نمره های در محدوده ی ۶۰-۶۹ و F را سایر نمرات به چاپ می رساند .

عبارت شبه کد بالا را می توان در C# به فرم زیر نوشت :

اگر مقدار grade بزرگتر یا مساوی ۹۰ باشد ، اولین شرط از پنج شرط برقرار شده و فقط عبارت قرار گرفته در بدنه اولین شرط به اجرا در می آید . پس از اجرای این عبارت از بخش else خارجی عبارت if..else پرش خواهد شد . اکثر برنامه نویسان C# ترجیح می دهند که عبارت if..else را با استفاده از کلمه کلیدی else if وبه صورت زیر در برنامه های خود بنویسند :

هر دو فرم بالا معادل یکدیگرند ، اما نوع دوم در نزد برنامه نویسان از محبوبیت بیشتری برخوردار است . چرا که از دندانه دار کردن عمیق کد به طرف راست اجتناب می شود .