【发布时间】:2014-02-18 17:14:29
【问题描述】:
System.Numerics 程序集只包含BigInteger 和Complex 两种类型(结构),built in Numerical types 的其余部分包括(int、long、double ...)都在System.dll 程序集中。
为什么要这样分离?例如,我可以在两个程序集中的两种类型的声明中看到,例如:
双:
public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
复杂:
public struct Complex : IEquatable<Complex>, IFormattable
这里Complex类型实现的接口都是Double用到的,一般都是来自System组件,所以基本上实现的接口不会是分离的原因。
我仍然想知道这种分离背后的目的是什么,它们都是数字类型,它们都是内置的,它们都以某种方式从同一个程序集实现相同的接口,为什么要这样分离,为什么 BigInteger 和复杂类型与所有其他内置数字类型一起在系统程序集中?!
这种分离还伴随着这样一个事实,即 System.Numerics 类型在书籍和教程中确实很少提及,这使得像我这样的年轻初学者开发人员长时间忽视这些类型的存在。
编辑:我这个问题不是说我的观点,我只是不明白这个案例,我问这个问题是为了对平台有更多的了解。
【问题讨论】:
-
您可能会在不知道它们的情况下走得更久——它们没有被广泛使用。
-
旁注:通常此类历史问题不会得到有效答案,因为您需要 .Net 设计团队的成员来回答。如果有兴趣,您可以尝试在 blogs.msdn.com 上挖掘笔记...就我个人而言,我认为这些类型需要在运行时的公共部分中没有充分的理由,因为它们针对的是非常具体的一组问题(通常与数学相关)。
-
不幸的是,总会有一些你从未听说过的东西。就在今天,我了解到
KeyedCollection,我们内部有一个实现,我现在要重新访问。
标签: c# .net types .net-assembly numeric