2010-06-29 12 views
5

Tengo algunos problemas para explicar la pregunta en una sola línea para el título, pero espero que esta descripción le proporcione suficiente información para comprender completamente mi pregunta:¿Cuál es la forma más fácil de llenar los vacíos en una lista de números?

Tengo algunas variables en un documento de Word. Cada variable tiene un Value que es un número (desde 0 hasta el número de variables). Un SortedDictionary se está llenando con estas variables, pero es posible que una variable haya sido eliminada anteriormente, por lo que hay un "espacio" por así decirlo. Ejemplo: se añaden

5 Variables a un SortedDictionary<int, string> donde el primer número es el int y la cadena corresponde a la parte string de la SortedDictionary.

0 "name 1" 
1 "name 2" 
2 "name 3" 

Ahora una de las variables se suprime por lo que el diccionario se llena a cabo de esta manera:

0 "name 1" 
2 "name 3" 

Eventualmente todas las entradas SortedDictionary se añaden en un cuadro de lista y estoy usando el primer número como el índice para la inserción. Puede imaginar que dará un error cuando intente agregar un elemento en index 2 cuando index 1 no existe, pero index 0 sí lo hace.

La forma en que quiero resolverlo es cuando el usuario llama al método DeleteVariable() y se quita una variable, todas las variables deben actualizar automáticamente su valor (número) de modo que cuando SortedDictionary obtiene todas las variables, el cuadro de lista ya no da un error porque todos los números coinciden (sin espacios).

Por favor, asesorar.

Respuesta

7

Utilizaría una lista en lugar del diccionario ordenado. Su número será el índice en la lista. De esta forma, si elimina un elemento de la lista (utilizando probablemente list.RemoveAt (index)), todos los demás índices se "actualizarán" efectivamente de la manera que desee.

+0

Sí, mi pensamiento también (pero cometí un error en mi respuesta, así que votaré por el tuyo en su lugar). –

+0

Eso es perfecto. Entonces puedo simplemente ajustar todos los valores variables basados ​​en los índices de la lista. Brillante, gracias! – Fusyion

Cuestiones relacionadas