C# 是int的继承,字节。。在.NET中,从对象开始是否仍然正确?

C# 是int的继承,字节。。在.NET中,从对象开始是否仍然正确?,c#,compilation,compiler-construction,C#,Compilation,Compiler Construction,我知道“每个类扩展一个类对象”,甚至像int这样的值类型也从object扩展/继承。我认为其中一个原因是,在前泛型时代,可以将各种类型的对象存储在数组容器中 应用程序“在现实世界中”是否使用了从对象继承的简单类型(int,float…) 我们为此付费吗?以降低速度或增加内存需求的形式 我们需要它吗? 我正在研究一种理论语言,我想知道继承int,long,float(简单类型)。。从对象将有助于创建应用程序。 在我看来,这比简化语言语法更复杂,而且没有额外的附加值 重写ToString()可以用

我知道“每个类扩展一个类对象”,甚至像
int
这样的值类型也从
object
扩展/继承。我认为其中一个原因是,在前泛型时代,可以将各种类型的对象存储在
数组
容器中

应用程序“在现实世界中”是否使用了从
对象继承的简单类型(
int
float
…)

我们为此付费吗?以降低速度或增加内存需求的形式

我们需要它吗?

我正在研究一种理论语言,我想知道继承
int
long
float
(简单类型)。。从
对象
将有助于创建应用程序。 在我看来,这比简化语言语法更复杂,而且没有额外的附加值

  • 重写
    ToString()
    可以用接口替换,例如
    IToString
  • 泛型容器可能包含int、long和float
  • Integer
    类作为
    int
    的包装可以在其他情况下使用

在许多地方,C#的自动装箱功能非常有用,例如
Console.WriteLine()
或者当您希望通过反射调用方法或希望通过反射检索值时。而且可能还有更多的地方依赖自动装箱。当然,可以像在Java中那样为原语引入包装器类。我认为这是倒退的一步。请注意,仅为每个原语提供包装器类型是不够的——所有值类型(包括结构和枚举)都需要包装器类型。使用可通过泛型装箱类完成的真正泛型:

公共类框,其中T:struct
{
公共框(T值)=>value=value;
公共T值{get;}
}

但最终会给用户带来很多工作,这些工作是由dotnet中的运行时完成的。

原语是否在Java中实现接口?是什么让他们能够在.NET中做到这一点,你认为。。。也许,继承自
对象
?不需要包装器。
java
tag可能是个坏主意。我一直在寻找Java用户对简单类型继承的看法,但如果我正确理解了
Console.WriteLine()
部分,这可能只是混淆了这个问题-像int这样的简单类型不需要从
object
继承来用于
Console.WriteLine()
,这可以通过带有
ToString()
函数的接口或内置函数来完成。但是,感谢您对Reflections的有趣观点,我认为quinmars注意到的特定重载是采用格式字符串和可变数量参数的重载。Java在格式说明符中使用类型信息,例如
%d
%s
,它告诉Java堆栈上的参数是原语还是指向类的指针。这在C的printf之后,因为(我假设)它有相同的限制。NET具有位置标记,它从实例获取类型信息,因为它始终是引用,例如,即使它是装箱的
Int32