C# 仅在调试模式下检查参数
我有一个带构造函数的Vector3类: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注释中说
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说它只需在发布模式下调用一个方法。所以:在发布模式下它是否会被忽略?我发现:是的,很抱歉没有提前回复,但您自己发现了更多信息:)