当前位置: 首页 > 知识库问答 >
问题:

如果C#的原语类型实现方式不同,性能会有什么不同?

公良莫希
2023-03-14

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

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

int foo = 1;

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

然而,在Java中,当我们编写同一段代码时,我们并不是在实例化一个对象。因为“int”是“由Java编译器和JVM直接实现的”

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

共有1个答案

屠瑞
2023-03-14

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

int foo = 1;

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

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

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

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

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

 类似资料:
  • 在研究泛型时,我注意到泛型方法和泛型类型(类或接口)在类型引入语法上的一个差异使我感到困惑。 泛型方法的语法为 文件上说 为了彼此保持一致,我希望方法语法为 ,或者类型语法(for class)为,但事实显然并非如此。 为什么一个要介绍在前,另一个要介绍在后? 我主要以的形式使用泛型,并认为可能看起来很奇怪,但这是一个主观的参数,此外对于方法也是这样。您可以调用,类似于 在寻找技术解释时,我想在指

  • 实现瀑布流浏览互联网图片的界面效果。 开发者@假如你就是李四 说:最近看了几个别人写的瀑布效果源码,感觉复杂了点,于是自己通过UITableview的组合实现了下这个效果,感觉性能上应该还不错。里面用到了第三方的库(SDWebImage)和数据。 [Code4App.com]

  • 为什么Java中的泛型可以处理类而不能处理基元类型? 例如,这个操作很好: 但这是不允许的:

  • 为什么它们被用于不同类型的任务?它们在处理计算任务和io任务时有什么不同? schedulers.io()--用于I/O绑定的工作,如阻塞I/O的异步性能,该调度程序由线程池支持,线程池将根据需要增长;对于普通的计算工作,切换到Schedulers.Computation();默认情况下,schedulers.io()是一个CachedThreadScheduler,它类似于具有线程缓存的新线程调

  • 通信对等方发送了一个uint64_t数据字段,它包含一个订单ID,我需要将其存储到不支持无符号整数类型的PostgreSQL-11 DB中。虽然一个实际数据可能超过2^63,但我认为如果我仔细执行一些强制转换,在PostgreSQL 11中的文件可以容纳它。 假设有: 我计划使用以下方法之一将uint64_t值强制转换为int64_t值: null 谢谢!!!

  • 在为存储在本地数据库中的数据实现搜索功能时,您将如何处理? > 每次用户输入 桌子上有200-300行。每行包含10-15列。 附言:我总是对缓存的列表执行过滤,主要是因为无论如何我都需要显示完整的列表,所以整个数据集已经被预取了。 让我们假设您不必首先显示整个列表,并且只在用户开始键入时显示,在这种情况下执行数据库查询总体上更好吗? 我只是不确定。我看见一位同事在做询问。 是的,我懒得测试数据库