什么是C#中的Delphi FillChar?

时间:2008-11-26 10:55:42

标签: c# delphi

什么是Delphi的FillChar的C#等价物?

3 个答案:

答案 0 :(得分:6)

我假设你想用零填充一个字节数组(因为那是FillChar在Delphi中最常用的)。

.NET保证在创建时将字节数组中的所有值初始化为零,因此通常不需要.NET中的FillChar。

所以说:

byte[] buffer = new byte[1024];

将创建1024个零字节的缓冲区。

如果你需要在使用缓冲区之后将字节归零,你可以考虑放弃你的字节数组并声明一个新的字节数组(如果你不介意让你的GC工作有点难以清理)

答案 1 :(得分:3)

如果我正确理解FillChar,它会将数组的所有元素设置为相同的值,是吗?

在这种情况下,除非值为0,否则您可能需要循环:

for(int i = 0 ; i < arr.Length ; i++) {
    arr[i] = value;
}

要将值设置为类型0,有Array.Clear

显然,使用循环答案,如果需要,可以将此代码粘贴在实用程序方法中...例如,作为扩展方法:

public static void FillChar<T>(this T[] arr, T value) {...}

然后你可以使用:

int[] data = {1,2,3,4,5};
//...
data.FillChar(7);

如果你绝对必须有块操作,那么Buffer.BlockCopy可用于在数组locatiosn之间blit数据 - 例如,你可以写第一个块,然后blit几次填补阵列的大部分。

答案 2 :(得分:1)

在C#中尝试:

String text = "hello";
text.PadRight(10, 'h').ToCharArray();