Java 如果C#和#x27;s的基元类型的实现方式不同?

Java 如果C#和#x27;s的基元类型的实现方式不同?,java,c#,primitive,primitive-types,Java,C#,Primitive,Primitive Types,如果C#的内置数据类型的实现方式与Java的原始数据类型的实现方式相同,那么性能会有差异吗 例如,在C#中,如果我们编写以下代码: int foo = 1; int foo = 1; 我们正在声明和实例化一个对象,对吗 然而,在Java中,当我们编写同一段代码时,我们并没有实例化一个对象。因为“int”是 因此,我想知道如果C#使用了与Java相同的实现——也就是说,每次在C#中使用像int这样的原始数据类型时都不生成对象,这是否会有所不同 例如,在C#中,如果我们编写以下代码: int f

如果C#的内置数据类型的实现方式与Java的原始数据类型的实现方式相同,那么性能会有差异吗

例如,在C#中,如果我们编写以下代码:

int foo = 1;
int foo = 1;
我们正在声明和实例化一个对象,对吗

然而,在Java中,当我们编写同一段代码时,我们并没有实例化一个对象。因为“
int
”是

因此,我想知道如果C#使用了与Java相同的实现——也就是说,每次在C#中使用像
int
这样的原始数据类型时都不生成对象,这是否会有所不同

例如,在C#中,如果我们编写以下代码:

int foo = 1;
int foo = 1;
我们正在声明和实例化一个对象,对吗

没有;您正在堆栈上声明本地值类型或值类型实例字段。没有涉及任何物体
int
不是对象类型,
Int32
int
在.NET中是完全相同的东西

(实际上,有一种情况是,
foo
最终会导致一个额外的对象,与某些方法中的局部变量的处理方式有关;
aysnc
、迭代器块、lambdas等。)

通过在C#中每次使用int等基本数据类型时不生成对象

这正是C#所做的,而且一直如此。更多:与Java不同,这也适用于泛型

例如,在C#中,如果我们编写以下代码:

int foo = 1;
int foo = 1;
我们正在声明和实例化一个对象,对吗

没有;您正在堆栈上声明本地值类型或值类型实例字段。没有涉及任何物体
int
不是对象类型,
Int32
int
在.NET中是完全相同的东西

(实际上,有一种情况是,
foo
最终会导致一个额外的对象,与某些方法中的局部变量的处理方式有关;
aysnc
、迭代器块、lambdas等。)

通过在C#中每次使用int等基本数据类型时不生成对象


这正是C#所做的,而且一直如此。更多:与Java不同,这也适用于泛型。

您可能会发现这很有趣:这是说,尽管int是从System.Object继承的,并且可以作为一个对象,就内存而言,它的作用类似于原语,除非您取消装箱them@developer“除非你把它们装箱”,当然。。。(对比:“取消装箱”)。事实上,C#编译器知道如何处理基元类型,在Java的情况下,如果需要像
Java.lang.Integer
(通常用于某些映射)这样的包装类型,则自动装箱在运行时会发生。是的,对不起,框未取消装箱您可能会发现这一点:这是说,尽管int是从System.Object继承的,并且可以作为一个对象,就内存而言,它就像原语一样,除非你取消绑定them@developer“除非你把它们装箱”,当然。。。(对比:“取消装箱”)。事实上,C#编译器知道如何处理基元类型,在Java中,如果需要像
Java.lang.Integer
(通常用于某些映射)这样的包装器类型,则自动装箱是在运行时发生的。是的,对不起,框未取消装箱