首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >System.Numerics是一个独立的程序集的原因

System.Numerics是一个独立的程序集的原因
EN

Stack Overflow用户
提问于 2014-02-18 17:14:29
回答 2查看 146关注 0票数 1

System.Numerics程序集只包含两种类型(结构) BigIntegerComplex,其余的built in Numerical types包括(int,long,double .)都在System.dll程序集中。

为什么要分开?例如,我可以从两个程序集中看到两种类型的声明,例如:

Double :

代码语言:javascript
复制
public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>

配合物:

代码语言:javascript
复制
public struct Complex : IEquatable<Complex>, IFormattable

这里所实现的复杂类型的接口都是在Double中使用的,并且通常都来自系统程序集,因此基本上实现的接口不会是这种分离的原因。

我仍然想知道这种分离背后的目的是什么,它们都是数字类型,它们都是内置的,它们都实现了来自同一个程序集的相同接口,为什么这种分离,为什么BigInteger和复杂类型不能与所有其他内置的数字类型一起出现在系统程序集中?!

这种分离还伴随着这样一个事实,即在书籍和教程中很少提到System.Numerics类型,而且像我这样年轻的初学者需要长期忽略这些类型的存在。

编辑:我不是说这个问题来谈我的意见,我只是不明白这个情况,我要求这个问题对平台有更多的了解。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-18 17:24:57

它们被添加到框架中的时间比其他类型晚得多。

因此,在某个时候,微软的一些团队正在创建这两种类型,他们必须做出决定:我们是将它们添加到现有的DLL中,例如mscorlib.dll或System.dll,还是将它们添加到新的DLL中。

我敢肯定他们考虑了所有的职业和骗局。

以下是一些支持将它们放入一个单独的大会的决定的可能论点:

  • 它们很少被需要。为什么要使用很少需要的类型来增加现有程序集的大小?
  • 其他人可能已经实现了名为BigIntegerComplex的类型。通过不将我们的实现添加到现有程序集中,我们就不太可能为它们制造问题(即破坏它们的构建)。
  • 通过将它们放到单独的程序集中,我们可以有一个单独的发布周期。我们不必等待.NET框架的下一个版本才能发布此程序集。

我知道所有这些论点都有相反的论点,但他们确实决定建立一个单独的大会。至于实际的原因,你必须问有关的小组。尽管如此,许多团队每次想要添加一个类型时都会问自己同样的问题。上述各点经常列在所考虑的论点清单上。

票数 4
EN

Stack Overflow用户

发布于 2014-02-18 17:29:25

除了在基类库之后引入更多的数据类型之外,它们还表示CPU不操作的数据类型。在BCL中找到的操作符可以直接在CPU上执行,例如加法、减法等。一个值得注意的例外是BCL特别考虑的decimal类型。

在我看来,第二个主要原因是,将这些类型分离开来会阻碍它们在所有平台上的使用。在决定在手机或平板电脑上使用BigInteger之前,您需要特别了解它是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21860756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档