Pregunta

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

Estoy trabajando con la Oficina de interoperabilidad, y cada propiedad es un array de objetos que se inicia en 1 (supongo que fue originalmente programado en VB.NET), y no se puede modificar, usted tiene que fijar todo el conjunto para que acepte los cambios.

Como solución yo soy la clonación de la matriz original, la modificación que uno, y estableciendo como un todo cuando estoy hecho.

Pero, me preguntaba si era posible crear una nueva no-basado en cero de la matriz de

¿Fue útil?

Solución

Otros consejos

Es posible hacer lo que usted solicita ver el código de abajo.

// 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, simplemente.Pero sin duda puede escribir su propia clase.Habría una matriz como una variable privada, y el usuario podría pensar que su matriz comienza en 1, pero en realidad se inicia en cero y se resta 1 de todos los de su matriz de accesos.

Usted puede escribir su propia clase array

No creo que si es posible modificar el índice inicial de matrices.

Me gustaría crear mi propia matriz de uso de los medicamentos genéricos y de manejar en el interior.

Sólo mantener de const int llamado 'offset' con un valor de uno, y siempre añade que a su subíndices en el código.

Yo creo que no se puede crear de cero basados en matrices en C#, pero fácilmente podría escribir un contenedor de clase de su propio alrededor de la incorporada en las estructuras de datos.Esta clase de contenedor tendría una instancia privada de el tipo de matriz que se requiere;la sobrecarga de la [] de indexación operador no está permitido, pero usted puede agregar un indizador a una clase para que se comporte como un índice de la matriz, ver aquí.La función de índice de escribir a continuación, podría sumar (o restar) 1, para todos los índices del pasado.

Entonces, usted puede utilizar su objeto de la siguiente manera, y se comportan correctamente:

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

En VB6 que podría cambiar la matriz para iniciar con 0 o 1, por lo que creo que VBScript puede hacer lo mismo.Para C#, no es posible, pero usted puede simplemente añadir valor NULL en la primera [0] y empezar a valor real en [1].Por supuesto, esto es un poco peligroso...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top