زبان برنامه نویسی سی شارپ دارای یک نوع دستور تصمیمگیری خاص است که عملگر شرطی سه تایی نامیده می شود. در این فصل با نحوه ی عملکرد این عملگر آشنا خواهیم شد.
عملگر سه تایی
زبان برنامه نویسی سی شارپ دارای یک نوع دستور تصمیمگیری خاص است که عملگر شرطی سه تایی نامیده می شود.
قاعده نوشتاری عملگر شرطی سه تایی به صورت زیر است :
var result = Boolean conditional expression ? first statement : second statement
همانطور که در قاعده ی نوشتاری بالا مشاهده می کنید عملگر شرطی سه تایی شامل سه قسمت است : اولین قسمت (قبل از ؟) شامل یک عبارت شرطی است که یک مقدار صحیح و یا ناصحیح را برمیگرداند. قسمت دوم (بعد از ؟ و قبل از علامت : ) شامل عبارتی است که در صورتیکه عبارت شرطی قسمت اول ، صحیح ارزیابی شود اجرا خواهد شد. قسمت سوم (بعد از علامت : ) شامل عبارت دیگری است که در صورتیکه عبارت شرطی قسمت اول ناصحیح ارزیابی شود برگشت داده خواهد شد.
نکته : عملگر شرطی سه تایی مقدار یا عبارتی که در قسمت های دوم و سوم قرار میگیرد را برمی گرداند. این عملگر این عبارت ها را اجرا نمی کند.
به نمونه مثال زیر توجه کنید. در این نمونه مثال عبارت شرطی x > y
مقدار بولین صحیح را برمیگرداند. در نتیجه عبارت موجود در قسمت دوم عملگر در متغیر result
قرار خواهد گرفت.
using System;
public class Program
{
public static void Main()
{
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);
}
}
خروجی نمونه مثال فوق به شکل زیر است :
x is greater than y
یک عملگر سه تایی می تواند هر مقدار را با هر داده نوعی برگرداند بنابراین پیشنهاد می شود که مقادیر برگشتی را در متغیری از نوع var
ذخیره کنید.
نکته : متغیرهایی که از نوع var
تعریف می شوند نوع آنها در هنگام مقدار دهی اولیه مشخص خواهد شد. در فصول آینده در مورد داده نوع var
صحبت خواهیم کرد.
نمونه مثال زیر نحوه استفاده از متغیری از نوع var
را به خوبی نشان داده است :
using System;
public class Program
{
public static void Main()
{
int x = 20, y = 10;
var result = x > y ? x : y;
Console.WriteLine(result);
}
}
خروجی نمونه مثال بالا به شکل زیر است :
20
از عملگر شرط سه تایی می توان به عنوان جایگزینی برای دستور if-else
استفاده کرد. نمونه مثال بالا را می توان با استفاده از دستور if-else
به شکل زیر باز نویسی کرد :
using System;
public class Program
{
public static void Main()
{
int x = 20, y = 10;
int result = 0;
if (x > y)
result = x;
else if (x < y)
result = y;
Console.WriteLine(result);
}
}
خروجی نمونه مثال بالا به شکل زیر است :
20
عملگرهای سه تایی تو در تو
عملگر های سه تایی را میتوان به صورت تودرتو به کار برد. در این صورت می توان در قسمت دوم و سوم عملگر سه تایی اول عملگرهای سه تایی دیگری را به کار برد. نمونه مثال زیر را در نظر بگیرید :
using System;
public class Program
{
public static void Main()
{
int x = 2, 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";
Console.WriteLine(result);
}
}
خروجی نمونه مثال بالا به شکل زیر است :
x is less than y
نکته : عملگر های سه تایی از سمت راست ارزیابی میشوند. بنابراین a ? b : c ? d : e
به صورت (a ? b : (c ? d : e
ارزیابی میشود.
نه به صورت a ? b : c) ? d : e)
. در این موارد بهتر است برای جلوگیری از سردرگمی از پرانتز ها به صورت صریح استفاده کنید.
به خاطر داشته باشید که عملگر سه تایی :
- عملگر سه تایی مقادیر را برگشت میدهد اما آنها را اجرا نمیکند
- از عملگر سه تایی میتوان به عنوان جایگزینی برای یک دستور if-else کوتاه استفاده کرد.
- در زبان سی شارپ میتوان عملگر های سه تایی را به صورت تو در تو به کار برد. این عملگر ها از سمت راست ارزیابی می شوند .