C#是否在引发断言之后?

时间:2020-06-24 06:38:25

标签: c#

在我的代码中,我有一个带有if条件的循环,检查是否超出范围。在生产中,如果发生这种情况,我只想调用continue,但是在调试中,我想为开发人员抛出一个断言。我该怎么做?

int x = 10;
if(x > 5){

//assert

continue;

}

我简化了上面的条件,实际上我检查了大约4个不同的参数。

2 个答案:

答案 0 :(得分:0)

请参见Debug.Assert。如果没有DEBUG定义,它将在生产版本中“被禁用”。

检查条件;如果条件为 false ,则输出消息并显示一个显示调用堆栈的消息框。

默认情况下,Debug.Assert方法仅在调试版本中有效。如果要在发行版本中进行断言,请使用Trace.Assert方法。

示例。请注意“翻转”逻辑:

Debug.Assert(x <= 5);

可以通过ConditionalAttribute将相同的行为添加到自定义方法中。例如,可以创建一个“ MyAssert”以写入日志文件。

答案 1 :(得分:0)

这很简单,您可以这样做。默认情况下,Debug.Assert方法仅在调试版本中有效。

以下示例检查type参数是否有效。如果type为null,则声明输出一条消息。

public static void MyMethod(Type type, Type baseType) {
    Debug.Assert(type != null, "Type parameter is null");

   // Perform some processing.
 }

参考:https://docs.microsoft.com/en-us/dotnet/api/system.diagnostics.debug.assert?view=netcore-3.1