为什么c#中没有基数类型的数字?

suh*_*air 6 .net c#

与java不同,为什么c#没有浮点数,整数等的超类型?在c#中避免使用Number的任何理由?

Fel*_*oto 6

因为值类型不能继承.


Mar*_*ell 4

我不知道是否属实,但我听到的一种解释是重量 - 特别是对于小型框架(Compact Framework、Silverlight、Micro Framework);我对此不太相信...

更令人信服的是,仅仅知道它是一个数字并不能提供太多信息。例如,整数除法的工作方式与浮点数非常不同,并且运算符并不总是像您希望的那么简单(想想DateTime + TimeSpan => DateTime, DateTime - DateTime => TimeSpan)。

如果有帮助,MiscUtil提供通用运算符支持,允许执行以下操作:

T x = ..., y = ...; // any T that has suitable operators
T sum = Operator.Add(x,y);
Run Code Online (Sandbox Code Playgroud)

一切都非常干净和高效。但请注意,没有编译时验证(因为没有合适的通用约束)。但它有效。