如果 C# 的基本类型以不同方式实现,性能会有差异吗?

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# 中使用原始数据类型时都不创建一个对象。

Mar*_*ell 5

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

int foo = 1;
Run Code Online (Sandbox Code Playgroud)

我们正在声明和实例化一个对象,对吗?

不; 您正在声明堆栈上的本地值类型或值类型实例字段。涉及零个对象。int不是一个对象的类型,并且Int32int完全相同的事情在.NET。

(实际上,有一种情况,foo可以最终导致一个额外的对象-关系到如何在当地人的一些方法进行处理; aysnc,迭代器块,lambda表达式等)

每次在 C# 中使用像 int 这样的原始数据类型时都不创建一个对象。

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