आप एक बूलियन अभिव्यक्ति लिख रहे हैं जो इस तरह दिख सकती है:
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; }
}
... और आपको एक त्रुटि मिलती है:
ऑपरेटर '&&' प्रकार 'बूल' और 'बूल' के ऑपरेंड पर लागू नहीं किया जा सकता है
इसे संभालने के लिए इष्टतम / सबसे साफ तरीका क्या है?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet ?? false)
क्या यह वास्तव में पठनीय है?
team.Category == "A Team" && (team?.Manager?.IsVietnamVet).GetValueOrDefault()
यह LINQ-to-Entities में काम नहीं कर सकता है ...
team.Category == "A Team" && team?.Manager?.IsVietnamVet == true
क्या आप वाकई
if (condition == true)
बिना किसी झिझक के लिखेंगे ?
क्या कोई अन्य विकल्प भी हैं? क्या अंततः लिखना बेहतर है:
team.Category == "A Team" && team.Manager != null && team.Manager.IsVietnamVet
team.Manager?.IsVietnamVet
, अर्थात बाद में कोई अशक्त स्थिति नहीं है team
, क्योंकि पहले से ही नहीं हो सकता है null
।
nullableBool == true
मूल रूप से परीक्षण कर रहा है nullableBool != false && nullableBool != null
(और यह इसका दूसरा भाग है जो इसे उपयोगी बनाता है और इसलिए अति- उपयोगी नहीं है)
nullableBool == true
यदि मैंने रैपर नहीं बनाया तो मैंने उपयोग करना शुरू कर दिया । यह पठनीय है क्योंकि आप सामान्य == true
रूप से @Fater उल्लेख के रूप में नियमित बूलियन का उपयोग करते समय नहीं लिखते हैं , इसलिए यह सुझाव देता है कि चर अशक्त है। अंततः, यह LINQ पठनीयता में सुधार करता है क्योंकि आप @Fabio उल्लेखों के रूप में कई अशक्त स्थितियों का उपयोग नहीं करते हैं।