??
işleci, listedeki en iyi eşleşmeyi temel alarak bir nesneyi denemek ve atamak için kullanıyorum.Boştaki birleştirici işleçte hangi sol el öğesinin başarıyla atanmış olduğunu yakalama
Çeşitli eşleştirme kuralları vardır ama örneğin bu basitleştirilmiş var: Hata ayıklama amacıyla
objectImTryingToSet =
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking numerous things*/) ?? //rule1
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking different numerous things*/) ?? //rule2
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking again different numerous things*/); //rule3
, ben bir hata var olarak başarıyla objectImTryingToSet
atanan biriydi kural dize günlüğü saklamak istiyorum bir senaryoda, nesne, olması gerekmediğinde ve gerçek bir baş ağrısının, yanlış atamanın nerede yattığını bulmak için el ile tüm bu kuralları gözden geçirmeye çalıştığı zaman atanmaktadır.
string ruleThatMatched = null;
objectImTryingToSet =
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking numerous things*/) ?? if (objectImTryingToSet != null) { ruleThatMatched = "rule1" } //rule1
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking different numerous things*/) ?? if (objectImTryingToSet != null) { ruleThatMatched = "rule2" } //rule2
MyListOfPotentialMatches.FirstOrDefault(*/lamda checking again different numerous things*/); if (objectImTryingToSet != null) { ruleThatMatched = "rule3"} //rule3
//tried all the rules and still no match
if (objectImTryingToSet == null)
{
ruleThatMatched = "no rule managed to find a match";
}
??
operatörü kullanılarak bu bile mümkün mü:
Neden kullandığınız bir 'eğer ... else' yok?Üçlü veya null-birleştirme işlecini kullanırken –
ve bunu daha karmaşık hale getirmeye başladığınızda, eğer/else veya switch'e geçiş yapmaktan daha iyidir. – Jonesopolis
"Doktor, ben * bu * ne zaman acıyor!" "Şunu yapmayı kes." ... Üzgünüm, dayanamadım. :) –