Sorteo Libros Krasis Press
 
Enviar a un amigo Imprimir Texto sin justificar Texto justificado Letra pequeña Letra mediana Letra grande
buscar 
novedades
Recibe las ultimas noticias y los mejores articulos en tu email
Secciones
 • .NET Framework
 • ADO .NET
 • Ajax
 • Asp .NET
 • Biztalk
 • C#
 • Commerce Server
 • Exchange
 • IIS
 • Metodologías
 • J#
 • Móviles
 • Office
 • Reporting Services
 • Seguridad
 • Servicios Web
 • Sharepoint
 • Silverlight
 • SQL Server
 • Visual Basic .NET
 • Visual C++ .NET
 • Visual Studio
 • WCF
 • Windows
 • Workflow Foundation
 • WPF
 • XAML
 • XML
 • Dynamics
 • Libros
 • Noticias
 • Articulos
 • Webcast
 • Tutoriales
 • Eventos
 • Cursos
 • Ofertas Empleo
 • RSS
Contacto
¿Quieres saber quien es el creador de Clikear?
Weblogfree.com, crea tu propio blog facilmente, gratis y en español
Dotnetsolidario, ayuda al tercer mundo a traves de las tecnologias de la informacion
 
 

Tutorial C#

Tablas dentadas

 

Una tabla dentada no es más que una tabla cuyos elementos son a su vez tablas, pudiéndose así anidar cualquier número de tablas. Para declarar tablas de este tipo se usa una sintaxis muy similar a la explicada para las tablas unidimensionales solo que ahora se indican tantos corchetes como nivel de anidación se desee. Por ejemplo, para crear una tabla de tablas de elementos de tipo int formada por dos elementos, uno de los cuales fuese una tabla de elementos de tipo int formada por los elementos de valores 1,2 y el otro fuese una tabla de elementos de tipo int y valores 3,4,5, se puede hacer:

 

            int[][] tablaDentada = new int[2][] {new int[] {1,2}, new int[] {3,4,5}};

           

Como se indica explícitamente cuáles son los elementos de la tabla declarada no hace falta indicar el tamaño de la tabla, por lo que la declaración anterior es equivalente a:

 

            int[][] tablaDentada = new int[][] {new int[] {1,2}, new int[] {3,4,5}};

 

Es más, igual que como se vió con las tablas unidimensionales también es válido hacer:

 

            int[][] tablaDentada = {new int[] {1,2}, new int[] {3,4,5}};

 

Si no quisiésemos indicar cuáles son los elementos de las tablas componentes, entonces tendríamos que indicar al menos cuál es el número de elementos que podrán almacenar (se inicializarán con valores por defecto) quedando:

 

            int[][] tablaDentada = {new int[2], new int[3]};

 

Si no queremos crear las tablas componentes en el momento de crear la tabla dentada, entonces tendremos que indicar por lo menos cuál es el número de tablas componentes posibles (cada una valdría null), con lo que quedaría:

 

            int[][] tablaDentada = new int[2][];

 

Es importante señalar que no es posible especificar todas las dimensiones de una tabla dentada en su definición si no se indica explícitamente el valor inicial de éstas entre llaves. Es decir, esta declaración es incorrecta:

 

            int[][] tablaDentada = new int[2][5];

 

Esto se debe a que el tamaño de cada tabla componente puede ser distinto y con la sintaxis anterior no se puede decir cuál es el tamaño de cada una. Una opción hubiese sido considerar que es 5 para todas como se hace en Java, pero ello no se ha implementado en C# y habría que declarar la tabla de, por ejemplo, esta manera:

 

             int[][] tablaDentada = {new int[5], new int[5]);

           

Finalmente, si sólo queremos declarar una variable tabla dentada pero no queremos indicar su número de elementos, (luego la variable valdría null), entonces basta poner:

 

            int[][] tablaDentada;

 

Hay que precisar que aunque en los ejemplos hasta ahora presentes se han escrito ejemplos basados en tablas  dentadas de sólo dos niveles de anidación, también es posible crear tablas dentadas de cualquier número de niveles de anidación. Por ejemplo, para una tabla de tablas de tablas de enteros de 2 elementos en la que el primero fuese una tabla dentada formada por dos tablas de 5 enteros y el segundo elemento fuese una tabla dentada formada por una tabla de 4 enteros y otra de 3 se podría definir así:

 

            int[][][] tablaDentada = new int[][][] { new int[][] {new int[5], new int[5]},

                                                                 new int[][] {new int[4], new int[3]}};

 

A la hora de acceder a los elementos de una tabla dentada lo único que hay que hacer es indicar entre corchetes cuál es el elemento exacto de las tablas componentes al que se desea acceder, indicándose un elemento de cada nivel de anidación entre unos corchetes diferentes pero colocándose todas las parejas de corchetes juntas y ordenadas de la tabla más externa a la más interna. Por ejemplo, para asignar el valor 10 al elemento cuarto de la tabla que es elemento primero de la tabla que es elemento segundo de la tabla dentada declarada en último lugar se haría:

 

            tablaDentada[1][0][3] = 10;

Principal
Recomendado