即使我使用较小的数据类型,为什么C#仍会编译为相同大小?

时间:2018-07-08 21:49:54

标签: c# filesize

我做了一点测试,因为我想查看sbyte和int之间文件大小的差异,但是当我将文件编译为.exe时,两者的大小均为4kb。为什么会这样呢?我被那些用Java制作4kb游戏的人着迷,但是一个hello world应用程序在c#中是4kb。

2 个答案:

答案 0 :(得分:3)

通常来说,程序的代码会告诉CPU该怎么做-分配多少内存,在已分配的内存中放入什么,如何根据内存单元中的内容进行决策等。

程序的长度不取决于它在运行时分配的内存量,这与两条语句相同。

allocate 100 1-byte units

allocate 500 4-byte units

使用相同数量的字符。

区别在于运行时:第一条语句分配了100个字节,第二条语句分配了2,000个字节。这种差异不会反映在描述分配的语句的大小上。

答案 1 :(得分:0)

除其他外-如果编译为64位,则默认情况下数据类型为64位对齐。这是8个字节。这么多的内存。

但是,就您而言,实际上,您什么也没做。

Int32的长度与Int16的长度相同(实际上,它是System.Int16,全名,实际上更复杂,但现在暂时忽略它)。并且您的代码包含类型名称作为字符串。在减小变量的同时,实际上并没有更改字节的长度。