0 c# java primitive primitive-types
如果 C# 的内置数据类型的实现方式与 Java 的原始数据类型的实现方式相同,那么性能会不会有所不同?
例如,在C#中,如果我们编写如下代码:
int foo = 1;
Run Code Online (Sandbox Code Playgroud)
我们正在声明和实例化一个对象,对吗?
然而,在 Java 中,当我们编写同一段代码时,我们并不是在实例化一个对象。因为 ' int
' 是“由 Java 编译器和 JVM 直接实现的”。
所以我想知道如果 C# 使用与 Java 相同的实现是否会有所不同——即每次int
在 C# 中使用原始数据类型时都不创建一个对象。
例如,在C#中,如果我们编写如下代码:
Run Code Online (Sandbox Code Playgroud)int foo = 1;
我们正在声明和实例化一个对象,对吗?
不; 您正在声明堆栈上的本地值类型或值类型实例字段。涉及零个对象。int
不是一个对象的类型,并且Int32
和int
是完全相同的事情在.NET。
(实际上,有是一种情况,foo
可以最终导致一个额外的对象-关系到如何在当地人的一些方法进行处理; aysnc
,迭代器块,lambda表达式等)
每次在 C# 中使用像 int 这样的原始数据类型时都不创建一个对象。
这正是 C# 所做的,并且一直如此。更多:与 Java 不同,这也适用于泛型。