惯用C#:何时返回null,何时返回NaN
在指定和创建数值函数时,是否有任何C#惯用的指导原则,说明何时返回null,何时在两个输出都有效时返回NaN 导致这个问题的具体示例是,我正在为可枚举集合创建一个百分比扩展方法。我一直在考虑如果输入为空,应该返回什么。函数可以返回runningCount/totalCount,这将在零长度输入上返回NaN。然而,我不相信这与语言的总体感觉是一致的惯用C#:何时返回null,何时返回NaN,c#,C#,在指定和创建数值函数时,是否有任何C#惯用的指导原则,说明何时返回null,何时在两个输出都有效时返回NaN 导致这个问题的具体示例是,我正在为可枚举集合创建一个百分比扩展方法。我一直在考虑如果输入为空,应该返回什么。函数可以返回runningCount/totalCount,这将在零长度输入上返回NaN。然而,我不相信这与语言的总体感觉是一致的 是否有任何指导原则或语言示例可以告知决定是否重新运行NaN或null。您可能希望了解扩展方法的使用方式NaN是一个完全有效的double值,因此可用于
是否有任何指导原则或语言示例可以告知决定是否重新运行NaN或null。您可能希望了解扩展方法的使用方式
NaN
是一个完全有效的double
值,因此可用于执行计算(好吧,这些结果将始终是NaN
,但至少不会得到超出值)。如果您的上下文要求在使用它之前检查结果,那么您可能希望选择null
然而,Andre已经评论过,对于空集合的百分比(如果还没有项目,可能会产生)0
可能是一个更合理的返回值。惯用C#code在被要求做一些没有意义的事情时抛出异常。比如计算空输入的百分比。这应该是一个例外
当客户端代码没有检查时,返回null或NaN之类的神奇值往往会造成更多的麻烦。它不会,它也没有检查输入是否为空,所以它不会期望它们。Null对于它生成的不起眼的NullReferenceException来说是令人讨厌的,它没有暗示真正的问题可能是什么。NaN令人讨厌,因为它只是在不可察觉的情况下传播,将所有东西都变成NaN,最终生成无法追溯到源头的无意义结果。IMO:算算一下。如果结果为0,则返回0。如果不可能,抛出异常。在上面的示例中,它不会返回0或异常。我认为0大小的集合中符合要求的项目的百分比肯定不是0。