IsSaveNewbool?的类型
CoverLetterIdint?的类型

if (coverLetter.IsSaveNew ?? true || coverLetter.CoverLetterId == null)


coverLetter.CoverLetterId == null。该声明在Visual Studio(2012)中被标记为不可访问。

但是,如果IsSaveNew为false,则它将达到第二个条件。为什么Visual Studio这么说?

最佳答案

看起来像是运算符的优先级问题。您的陈述被评估为:

if (coverLetter.IsSaveNew ?? (true || coverLetter.CoverLetterId == null))


因此,||运算符的右侧操作数将永远不会被求值,因为其左侧操作数是文字true

您可以添加括号来解决此问题:

if ((coverLetter.IsSaveNew ?? true) || coverLetter.CoverLetterId == null)

关于c# - 如果条件不可达怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20990776/

10-13 08:25