什么是Delphi的FillChar
的C#等价物?
答案 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();