vectores resueltos matriz llenar insertar imprimir ejercicios ejemplos datos bidimensionales arreglos arreglo c# arrays interop ms-office initialization

resueltos - Inicializando una matriz en el índice de inicio arbitrario en c#



llenar un arreglo en c# (8)

¿Es posible en c # inicializar una matriz en, por ejemplo, subíndice 1?

Estoy trabajando con la interoperabilidad de Office, y cada propiedad es una matriz de objetos que comienza en 1 (supongo que fue originalmente programada en VB.NET), y no puede modificarla, tiene que configurar toda la matriz para que acepte el cambios.

Como solución alternativa, estoy clonando la matriz original, modificando esa, y configurándola como un todo cuando termino.

Pero, me preguntaba si era posible crear una nueva matriz basada en cero


En VB6 puedes cambiar la matriz para comenzar con 0 o 1, así que creo que VBScript puede hacer lo mismo. Para C #, no es posible, pero puede simplemente agregar valor NULL en el primero [0] e iniciar el valor real en [1]. Por supuesto, esto es un poco peligroso ...


Es posible hacer lo que solicite ver el código a continuación.

// Construct an array containing ints that has a length of 10 and a lower bound of 1 Array lowerBoundArray = Array.CreateInstance(typeof(int), new int[1] { 10 }, new int[1] { 1 }); // insert 1 into position 1 lowerBoundArray.SetValue(1, 1); //insert 2 into position 2 lowerBoundArray.SetValue(2, 2); // IndexOutOfRangeException the lower bound of the array // is 1 and we are attempting to write into 0 lowerBoundArray.SetValue(1, 0);


No creo que pueda crear matrices que no sean basadas en cero en C #, pero podría escribir fácilmente una clase contenedora propia alrededor de las estructuras de datos integradas. Esta clase contenedora contendría una instancia privada del tipo de matriz que requería; no se permite sobrecargar el operador de indexación [], pero puede agregar un indexador a una clase para que se comporte como una matriz indexable, consulte aquí . La función de índice que escriba podría agregar (o restar) 1 a todos los índices ingresados.

Luego podría usar su objeto de la siguiente manera, y se comportaría correctamente:

myArrayObject[1]; //would return the zeroth element.


No creo que sea posible modificar el índice inicial de las matrices.

Crearía mi propio arreglo usando genéricos y lo manejaría adentro.


No simplemente. Pero ciertamente puedes escribir tu propia clase. Tendría una matriz como variable privada, y el usuario pensaría que su matriz comienza en 1, pero en realidad comienza en cero y resta 1 de todos sus accesos a la matriz.


Puedes escribir tu propia clase de matriz


Simplemente conserve const int named ''offset'' con un valor de uno, y siempre agregue eso a sus subíndices en su código.