estoy usando la siguiente declaración en Java:C# equivalentes a Arrays.fill de Java() método
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Para sugerir el equivalente C#.
estoy usando la siguiente declaración en Java:C# equivalentes a Arrays.fill de Java() método
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Para sugerir el equivalente C#.
No sé de nada en el marco que hace eso, pero es bastante fácil de implementar:
// Note: start is inclusive, end is exclusive (as is conventional
// in computer science)
public static void Fill<T>(T[] array, int start, int end, T value)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (start < 0 || start >= end)
{
throw new ArgumentOutOfRangeException("fromIndex");
}
if (end >= array.Length)
{
throw new ArgumentOutOfRangeException("toIndex");
}
for (int i = start; i < end; i++)
{
array[i] = value;
}
}
O si desea especificar el recuento en lugar del inicio/finalización:
public static void Fill<T>(T[] array, int start, int count, T value)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (count < 0)
{
throw new ArgumentOutOfRangeException("count");
}
if (start + count >= array.Length)
{
throw new ArgumentOutOfRangeException("count");
}
for (var i = start; i < start + count; i++)
{
array[i] = value;
}
}
que no hace lo mismo que 'fill'. –
pero no es una matriz de destino para copiar ... está tomando longitud ... mynewArray is int [] – usr021986
La sugerencia de Rasel es correcta. Ejemplo de trabajo: int [] arr = new int [1000]; Array.Copy (arr.Select (i => 5) .ToArray(), arr, arr.Length); – dmitry
Parece que le gustaría hacer algo de la misma familia
int[] bar = new int[] { 1, 2, 3, 4, 5 };
int newSize = 10;
int[] foo = Enumerable.Range(0, newSize).Select(i => i < bar.Length ? bar[i] : -1).ToArray();
Creación de una nueva matriz más grande con los viejos valores y llenando el extra.
Para un relleno sencillo tratar
int[] foo = Enumerable.Range(0, 10).Select(i => -1).ToArray();
o un rango sub
int[] foo = new int[10];
Enumerable.Range(5, 9).Select(i => foo[i] = -1);
Espero que mi edición esté justificada ... o nombre la variable como 'uptoIndex' – nawfal
@nawfal: No, fue deliberadamente (aunque no consistentemente) exclusivo. Lo he arreglado y he agregado una alternativa. –
Jon, ¿por qué compruebas casos excepcionales y te arrojas cuando el clr hace eso? Estoy un poco desconcertado por este tipo de diseño. ¿No bastaría solo con la segunda verificación condicional (en ambos ejemplos)? – nawfal