Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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#:何时返回null,何时返回NaN_C# - Fatal编程技术网

惯用C#:何时返回null,何时返回NaN

惯用C#:何时返回null,何时返回NaN,c#,C#,在指定和创建数值函数时,是否有任何C#惯用的指导原则,说明何时返回null,何时在两个输出都有效时返回NaN 导致这个问题的具体示例是,我正在为可枚举集合创建一个百分比扩展方法。我一直在考虑如果输入为空,应该返回什么。函数可以返回runningCount/totalCount,这将在零长度输入上返回NaN。然而,我不相信这与语言的总体感觉是一致的 是否有任何指导原则或语言示例可以告知决定是否重新运行NaN或null。您可能希望了解扩展方法的使用方式NaN是一个完全有效的double值,因此可用于

在指定和创建数值函数时,是否有任何C#惯用的指导原则,说明何时返回null,何时在两个输出都有效时返回NaN

导致这个问题的具体示例是,我正在为可枚举集合创建一个百分比扩展方法。我一直在考虑如果输入为空,应该返回什么。函数可以返回runningCount/totalCount,这将在零长度输入上返回NaN。然而,我不相信这与语言的总体感觉是一致的


是否有任何指导原则或语言示例可以告知决定是否重新运行NaN或null。

您可能希望了解扩展方法的使用方式
NaN
是一个完全有效的
double
值,因此可用于执行计算(好吧,这些结果将始终是
NaN
,但至少不会得到超出值)。如果您的上下文要求在使用它之前检查结果,那么您可能希望选择
null

然而,Andre已经评论过,对于空集合的百分比(如果还没有项目,可能会产生)
0
可能是一个更合理的返回值。

惯用C#code在被要求做一些没有意义的事情时抛出异常。比如计算空输入的百分比。这应该是一个例外


当客户端代码没有检查时,返回null或NaN之类的神奇值往往会造成更多的麻烦。它不会,它也没有检查输入是否为空,所以它不会期望它们。Null对于它生成的不起眼的NullReferenceException来说是令人讨厌的,它没有暗示真正的问题可能是什么。NaN令人讨厌,因为它只是在不可察觉的情况下传播,将所有东西都变成NaN,最终生成无法追溯到源头的无意义结果。

IMO:算算一下。如果结果为0,则返回0。如果不可能,抛出异常。在上面的示例中,它不会返回0或异常。我认为0大小的集合中符合要求的项目的百分比肯定不是0。