Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅在调试模式下检查参数_C#_Debugging_Arguments_Assert - Fatal编程技术网

C# 仅在调试模式下检查参数

C# 仅在调试模式下检查参数,c#,debugging,arguments,assert,C#,Debugging,Arguments,Assert,我有一个带构造函数的Vector3类: public Vector3 (double x, double y, double z) { #if DEBUG if (double.IsNan (x)) throw something... #endif X = x; ... } 我不想在发布模式下检查NaN。那么,只为调试模式添加检查是一种好的做法吗?我在XML注释中说

我有一个带构造函数的Vector3类:

    public Vector3 (double x, double y, double z)
    {
        #if DEBUG
            if (double.IsNan (x)) throw something...       
        #endif

        X = x;
        ...
    }

我不想在发布模式下检查NaN。那么,只为调试模式添加检查是一种好的做法吗?我在XML注释中说过,构造函数不检查Nan或无穷大。但我可以在调试模式下检查以获得更好的denuging,对吗?这样行吗?还是坏模式?

这就是您要寻找的:

System.Diagnostics.Debug.Assert(!double.IsNan(x), "Some message shown if assert fails".)

在发布模式下编译时,它会被忽略,因此不会对性能产生影响(当然,除非您处于调试模式)。

为什么要这样做?附加值是什么?不明白你的问题吗?我想尽快实例化vector3结构。所以我不检查Nan或无穷大。但在调试模式下,为什么不呢?这样可以吗?我认为进行此检查是完全有效的,但出于其他原因(时间因素可以忽略不计)。有些情况你认为不应该发生,但如果发生了,你就不想抛出错误。另一方面,在开发时,您可能希望得到一个通知,说明发生了这种情况。正如下面的回答中提到的那样,Debug.Assert是正确的方法。AlexD说它只需在发布模式下调用一个方法。所以:在发布模式下它是否会被忽略?我发现:是的,很抱歉没有提前回复,但您自己发现了更多信息:)