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можно использовать для blit данных между массивами locatiosn - например, вы можете написать первый кусок, а затем blit его несколько раз, чтобы заполнить основную часть массива.
Я предполагаю, что вы хотите заполнить массив байтов нулями (так как это то, для чего FillChar в основном используется в Delphi).
.NET гарантированно инициализирует все значения в массиве байтов до нуля при создании, поэтому обычно FillChar в .NET не требуется.
Итак, говоря:
byte[] buffer = new byte[1024];Создаст буфер из 1024 нулевых байт.
Если вам нужно обнулить байты после того, как буфер был использован, вы можете просто отбросить свой массив байтов и объявить новый (это если вы не возражаете, чтобы GC работал немного тяжелее, убирая за вами).
Comments