这个if条件如何无法访问?

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这么说?

Fré*_*idi 6

看起来像是运营商优先问题.您的陈述评估为:

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)