在指定和创建数字函数时,是否有任何 C# 惯用指南,说明何时返回 null 以及何时返回 NaN(当两者似乎都是有效输出时)。
导致这个问题的具体例子是我正在为 Enumerable 集合创建一个百分比扩展方法。我一直在考虑如果有空输入要返回什么。该函数可以返回 runningCount / totalCount ,这将在零长度输入上返回 NaN。但是,我不相信这与语言的一般感觉很吻合。
是否有任何指南或语言示例可以告知是否重新调整 NaN 或 null 的决定。
在指定和创建数字函数时,是否有任何 C# 惯用指南,说明何时返回 null 以及何时返回 NaN(当两者似乎都是有效输出时)。
导致这个问题的具体例子是我正在为 Enumerable 集合创建一个百分比扩展方法。我一直在考虑如果有空输入要返回什么。该函数可以返回 runningCount / totalCount ,这将在零长度输入上返回 NaN。但是,我不相信这与语言的一般感觉很吻合。
是否有任何指南或语言示例可以告知是否重新调整 NaN 或 null 的决定。
当要求做一些没有意义的事情时,惯用的 C# 代码会引发异常。就像计算空输入的百分比一样。那应该是一个 InvalidOperationException。
当客户端代码不检查它时,返回 null 或 NaN 之类的魔法值往往会导致更多麻烦。它不会,它也没有检查输入是否为空,所以它不会期望它们。Null 对于它生成的不起眼的 NullReferenceException 来说是令人讨厌的,它没有暗示真正的问题可能是什么。NaN 令人讨厌,因为它只是以不可检测的方式传播,将所有内容都变成 NaN 并最终产生无法追溯到源头的无意义结果。
您可能想看看您的扩展方法可能会以何种方式使用。NaN
是一个完全有效的double
值,因此可用于执行计算(好吧,这些结果将始终为NaN
,但至少您不会得到异常)。如果您的上下文需要在使用之前检查结果,那么您可能需要选择null
.
然而,安德烈已经评论过,对于空集合的百分比(如果还没有项目,可能会导致)可能0
是一个更明智的返回值。