为什么跳过这个Debug.Assert?

时间:2018-04-08 06:23:24

标签: c# assertions

我有以下代码:

Debug.Assert(model.OrganizationId != null, "model.OrganizationId != null");
var orgId = model.OrganizationId.Value;

然而Debug.Assert行显示为灰色,当我将鼠标悬停在它上面时,我收到消息:

  

跳过方法调用。编译器不会生成方法   调用因为方法是有条件的,或者是没有的部分方法   实施

我的IDE处于Debug模式,我看到没有其他异常。为什么要断言这个断言?我并不太关心OrganizationId是否为null,因为它在模型上标记为Required,但我担心会跳过非常正常的Debug.Assert

1 个答案:

答案 0 :(得分:3)

Debug.Assert标有此属性。

[System.Diagnostics.Conditional("DEBUG")]

这意味着当您在项目配置中定义了“DEBUG”常量时,将编译此方法。

请注意,这与发布或调试构建模式无关。但默认情况下,调试配置已定义“DEBUG”常量。

为了解决这个问题,请转到你的项目设置,构建部分,确保配置设置为Debug。然后勾选“定义DEBUG常量”选项。