为什么要为这个变量分配空间?

时间:2017-12-11 14:32:37

标签: .net azure memory-management

我发现了这个,我想知道为什么循环中的变量有一个内存分配(.... 0x20;)。看起来变量只是填充了空格。但是,当我们用大小?

初始化字节变量时,为什么要这样做呢?
long fileByteLength = package.Properties.Length;
byte[] fileContent = new byte[fileByteLength];
for (int i = 0; i < fileByteLength; i++)
{
    fileContent[i] = 0x20;
}
// Download the file aa a byteArray to the fileContent variable
package.DownloadToByteArray(fileContent, 0);

1 个答案:

答案 0 :(得分:3)

显而易见的答案是:因为程序员想让它充满空间。用长度初始化意味着你得到了很多0字节。为什么程序员想要空格?我不知道。整个事情是糟糕的货物编程(意味着有人这样做是因为他看到其他人这样做,而不了解它是如何工作的或它做了什么)。

您应该使用stream或使用return value of that method。如果您的质量指南是&#34;良好的编程&#34;,则必须删除该循环并用上述任一解决方案替换。

我的偏好是流(可能是MemoryStream),这样你就可以摆脱所有字节计数和缓冲区移位以及返回值检查。这就是流抽象的目的。