Şuna benzeyebilecek bir boole ifadesi yazıyorsunuz:
team.Category == "A Team" && team?.Manager?.IsVietnamVet
public class Manager
{
public bool IsVietnamVet { get; set; }
}
public class Team
{
public string Category { get; set; }
public Manager Manager { get; set; }
}
... ve bir hata mesajı alıyorsunuz:
'&&' operatörü, 'bool' ve 'bool?' Türündeki işlenenlere uygulanamaz.
Bununla başa çıkmanın en iyi / en temiz yolu nedir?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet ?? false)Gerçekten okunabilir mi?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet).GetValueOrDefault()LINQ-to-Entities'de çalışmayabilir ...
team.Category == "A Team" && team?.Manager?.IsVietnamVet == trueif (condition == true)Hiç tereddüt etmeden gerçekten yazar mısın?
Başka seçenek var mı? Sonuçta yazmak daha mı iyi:
team.Category == "A Team" && team.Manager != null && team.Manager.IsVietnamVet
team.Manager?.IsVietnamVet, yani teamzaten sıfır koşullu olmamalıdır , çünkü zaten olamaz null.
nullableBool == truetemelde test ediyor nullableBool != false && nullableBool != null(ve yararlı ve bu nedenle gereksiz kılan bu ikinci bölüm )
nullableBool == trueBir sarıcı oluşturmazsam kullanmaya başladım . == true@Flater'dan bahsedildiği gibi normal boolean kullanırken normal olarak yazmadığınız için okunabilir , bu nedenle değişkenin null edilebilir olduğunu gösterir. Ek olarak, @Fabio'dan bahsedildiği gibi birden fazla boş koşul kullanmamanız nedeniyle LINQ okunabilirliğini artırır.