Sub*_*cob 1 .net c# visual-studio unreachable-code
IsSaveNew是类型的bool?
CoverLetterId类型int?
if (coverLetter.IsSaveNew ?? true || coverLetter.CoverLetterId == null)
Run Code Online (Sandbox Code Playgroud)
coverLetter.CoverLetterId == null.此声明在visual studio(2012)中标记为无法访问.
但如果IsSaveNew是假的,那么它将达到第二个条件.为什么Visual Studio这么说?
看起来像是运营商优先问题.您的陈述评估为:
if (coverLetter.IsSaveNew ?? (true || coverLetter.CoverLetterId == null))
Run Code Online (Sandbox Code Playgroud)
因此,操作||符的右侧操作数永远不会被计算,因为它的左侧操作数是文字true.
您可以添加括号来解决此问题:
if ((coverLetter.IsSaveNew ?? true) || coverLetter.CoverLetterId == null)
Run Code Online (Sandbox Code Playgroud)