2008-11-26 95 views

回答

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了几次,填补了散装的阵列。

+0

FillChar填充具有相同值的给定长度的结构(任何一个)。它不是Delphi库中最具描述性的名称,但已经存在很长时间了。 – 2008-11-26 14:40:11

1

在C#试试这个:

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

我假设你要填充用零字节数组(因为这是什么FillChar在德尔福主要用于)。

.NET保证在创建时初始化一个字节数组中的所有值,因此.NET中的FillChar通常不是必需的。

说着:

byte[] buffer = new byte[1024]; 

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

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

相关问题