System.Numerics程序集只包含两种类型(结构) BigInteger和Complex,其余的built in Numerical types包括(int,long,double .)都在System.dll程序集中。
为什么要分开?例如,我可以从两个程序集中看到两种类型的声明,例如:
Double :
public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>配合物:
public struct Complex : IEquatable<Complex>, IFormattable这里所实现的复杂类型的接口都是在Double中使用的,并且通常都来自系统程序集,因此基本上实现的接口不会是这种分离的原因。
我仍然想知道这种分离背后的目的是什么,它们都是数字类型,它们都是内置的,它们都实现了来自同一个程序集的相同接口,为什么这种分离,为什么BigInteger和复杂类型不能与所有其他内置的数字类型一起出现在系统程序集中?!
这种分离还伴随着这样一个事实,即在书籍和教程中很少提到System.Numerics类型,而且像我这样年轻的初学者需要长期忽略这些类型的存在。
编辑:我不是说这个问题来谈我的意见,我只是不明白这个情况,我要求这个问题对平台有更多的了解。
发布于 2014-02-18 17:24:57
它们被添加到框架中的时间比其他类型晚得多。
因此,在某个时候,微软的一些团队正在创建这两种类型,他们必须做出决定:我们是将它们添加到现有的DLL中,例如mscorlib.dll或System.dll,还是将它们添加到新的DLL中。
我敢肯定他们考虑了所有的职业和骗局。
以下是一些支持将它们放入一个单独的大会的决定的可能论点:
BigInteger和Complex的类型。通过不将我们的实现添加到现有程序集中,我们就不太可能为它们制造问题(即破坏它们的构建)。我知道所有这些论点都有相反的论点,但他们确实决定建立一个单独的大会。至于实际的原因,你必须问有关的小组。尽管如此,许多团队每次想要添加一个类型时都会问自己同样的问题。上述各点经常列在所考虑的论点清单上。
发布于 2014-02-18 17:29:25
除了在基类库之后引入更多的数据类型之外,它们还表示CPU不操作的数据类型。在BCL中找到的操作符可以直接在CPU上执行,例如加法、减法等。一个值得注意的例外是BCL特别考虑的decimal类型。
在我看来,第二个主要原因是,将这些类型分离开来会阻碍它们在所有平台上的使用。在决定在手机或平板电脑上使用BigInteger之前,您需要特别了解它是什么。
https://stackoverflow.com/questions/21860756
复制相似问题