C#struct内存优化?

use*_*350 6 c# java optimization struct memory-optimization

我接受了缓刑求职面试(?我不确定这是不是这个词),面试官让我告诉他结构和班级之间有什么区别.

所以我告诉了我所知道的一切以及我在msdn上读过的所有内容.

那家伙说"不够",我没有任何线索.所以他说:

结构是优化的,所以如果有和整数和浮点数,它们有一些相同的咬合,那么它将保存这个空间,所以struct with int=0float=0size的一半int=int.MAX,float=float.MIN.

好的.所以我很喜欢 - 没听说过.

但接下来,在采访之后我正在思考它并且它对我来说并没有多大意义.这意味着,当我们改变其中某个变量的值时,结构大小会有所不同.并且它不能真正存在于内存中,如果在扩展时发生碰撞会怎么样.而且我们必须写一些我们正在滑动的位,不确定它是否会给出任何优化.

另外,他在乞讨时问我,Java中的struct和class有什么不同.我已经回答过,Java中没有结构,他说"不是程序员,而是数字类型是结构"我有点像WTF.

基本上问题是:

这个家伙知道的是什么,这很难被了解(我的意思是,我在网上寻找它,找不到东西)

或许他对自己的工作一无所知,并试图在面试时看起来很酷.

War*_*enG 4

StructLayoutAttribute这家伙似乎对可应用于 C# 结构的感到困惑。它允许您指定结构体的内存如何布局,事实上,您可以创建一个具有不同类型字段的结构体,这些字段都从同一内存地址开始。他似乎错过的部分是你一次只能使用这些字段之一。MSDN这里有更多信息。查看TestUnion页面底部的示例结构。它包含四个字段,全部带有FieldOffset(0). 如果运行它,您可以为该i字段设置一个整数值,然后检查该d字段并查看它是否已更改。