Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Üçüncül koşullu işleç olarak da bilinen koşullu işleç?:, boole ifadesini değerlendirir ve Boole ifadesinin veya trueolarak değerlendirilip değerlendirilmediğine false bağlı olarak, aşağıdaki örnekte gösterildiği gibi iki ifadeden birinin sonucunu döndürür:
string GetWeatherDisplay(double tempInCelsius) => tempInCelsius < 20.0 ? "Cold." : "Perfect!";
Console.WriteLine(GetWeatherDisplay(15)); // output: Cold.
Console.WriteLine(GetWeatherDisplay(27)); // output: Perfect!
Yukarıdaki örnekte gösterildiği gibi, koşullu işlecin söz dizimi aşağıdaki gibidir:
condition ? consequent : alternative
İfadenin condition veya trueolarak false değerlendirilmesi gerekir. olarak değerlendirilirse conditiontrueconsequent, ifade değerlendirilir ve sonucu işlemin sonucu olur. olarak değerlendirilirse conditionfalsealternative, ifade değerlendirilir ve sonucu işlemin sonucu olur. Yalnızca consequent veya alternative değerlendirilir. Koşullu ifadeler hedef türündedir. Diğer bir deyişle, bir koşullu ifadenin hedef türü biliniyorsa ve consequent türlerialternative, aşağıdaki örnekte gösterildiği gibi hedef türe örtük olarak dönüştürülebilir olmalıdır:
var rand = new Random();
var condition = rand.NextDouble() > 0.5;
int? x = condition ? 12 : null;
IEnumerable<int> xs = x is null ? new List<int>() { 0, 1 } : new int[] { 2, 3 };
Koşullu ifadenin hedef türü bilinmiyorsa (örneğin, anahtar sözcüğünü kullandığınızda var ) veya türü consequent aynı alternative olmalıdır veya bir türden diğerine örtük bir dönüştürme olmalıdır:
var rand = new Random();
var condition = rand.NextDouble() > 0.5;
var x = condition ? 12 : (int?)null;
Koşullu işleç doğru ilişkilendiricidir, yani formun bir ifadesidir
a ? b : c ? d : e
olarak değerlendirilir
a ? b : (c ? d : e)
İpucu
Koşullu işlecin nasıl değerlendirildığını anımsamak için aşağıdaki anımsatıcı cihazı kullanabilirsiniz:
is this condition true ? yes : no
Koşullu başvuru ifadesi
Koşullu başvuru ifadesi, aşağıdaki örnekte gösterildiği gibi koşullu olarak bir değişken başvurusu döndürür:
int[] smallArray = {1, 2, 3, 4, 5};
int[] largeArray = {10, 20, 30, 40, 50};
int index = 7;
ref int refValue = ref ((index < 5) ? ref smallArray[index] : ref largeArray[index - 5]);
refValue = 0;
index = 2;
((index < 5) ? ref smallArray[index] : ref largeArray[index - 5]) = 100;
Console.WriteLine(string.Join(" ", smallArray));
Console.WriteLine(string.Join(" ", largeArray));
// Output:
// 1 2 100 4 5
// 10 20 0 40 50
Koşullu başvuru ifadesinin sonucunu atayabilirref Yukarıdaki örnekte gösterildiği gibi koşullu başvuru ifadesinin sonucuna da atayabilirsiniz.
Koşullu başvuru ifadesinin söz dizimi aşağıdaki gibidir:
condition ? ref consequent : ref alternative
Koşullu işleç gibi, koşullu başvuru ifadesi de iki ifadeden yalnızca birini değerlendirir: consequent veya alternative.
Koşullu başvuru ifadesinde ve consequent türü alternative aynı olmalıdır. Koşullu başvuru ifadeleri hedef türünde değildir.
Koşullu işleç ve deyim if
Bir if değeri hesaplamak için koşullu olarak ihtiyaç duyduğunuz durumlarda deyim yerine koşullu işlecin kullanılması daha kısa kodla sonuçlanabilir. Aşağıdaki örnekte, bir tamsayıyı negatif veya negatif olmayan olarak sınıflandırmanın iki yolu gösterilmektedir:
int input = new Random().Next(-5, 5);
string classify;
if (input >= 0)
{
classify = "nonnegative";
}
else
{
classify = "negative";
}
classify = (input >= 0) ? "nonnegative" : "negative";
İşleç aşırı yüklenebilirliği
Kullanıcı tanımlı bir tür koşullu işleci aşırı yükleyemez.
C# dili belirtimi
Daha fazla bilgi için C# dil belirtiminin Koşullu işleç bölümüne bakın.
Daha yeni özelliklerin belirtimleri şunlardır: