为什么是Array.Lengthint,而不是uint.这让我感到困扰(只是一点点),因为长度值永远不会是负数.
这也迫使我在我自己的类上使用int作为length-property,因为当你指定一个int值时,这需要显式地转换...
所以最终的问题是:对于unsigned int(uint)有什么用?甚至微软似乎也没有使用它们.
即使在框架类中,我总是遇到int用于.Count等等的代码而不是代码uint.
这是什么原因?
当然,我知道无符号整数(uint)和有符号整数()之间的基本区别int.
我注意到在.NET公共类中,一个被调用的属性Length总是使用有符号整数.
也许这是因为无符号整数不符合CLS.
但是,例如,在我的静态函数中:
public static double GetDistributionDispersion(int tokens, int[] positions)
Run Code Online (Sandbox Code Playgroud)
参数tokens和所有元素positions都不能为负数.如果它是否定的,最终结果是无用的.因此,如果我同时使用intfor tokens和positions,我必须在每次调用此函数时检查值(如果发现负值,则返回非感知值或抛出异常),这很乏味.
好的,那么我们应该使用uint两个参数.这对我来说真的很有意义.
然而,我发现,在许多公共API中,它们几乎总是在使用int.这是否意味着在他们的实现中,他们总是检查每个值的负面(如果它应该是非负的)?
总而言之,我该怎么办?
我可以提供两种情况:
我们应该对这两种情况使用不同的方案吗?
彼得
PS:我做了很多研究,仍然没有理由说服我不要使用uint:-)