miércoles, 21 de noviembre de 2007

Que bueno es tener razón… :)

Hace unos meses, cuando aún trabajaba en Metrovacesa, tuve un debate con un compañero programador (saludines Julio) sobre como almacenar una lista de pares de datos sin tener que tirar de la consabida dataTable en una propiedad… Si no os asustéis, es el tipo de programación que se arrejunta a utilizar “textbox hidden” para jugar al rugbi entre páginas.

Mi compañero me dio una solución, que a mí me parecía un tanto sobredimensionada y poco eficiente y que se trataba de hacer un array. Y que esos objetos fueran una clase con dos parámetros.

Dim personas() As ArrayList

Public Class cliente
Public id As Integer
Public nombre As String
End Class

Public Sub pintaPersonas()
Dim cliente As cliente = New cliente
cliente.id = 1
cliente.nombre = "Juan Carlos "
personas(0) = (cliente)

Response.Write(TryCast(lista(0), cliente).nombre)
End Sub


Y ahora, casi medio año después, y metido en el fregao de la certificación (sigo bendiciendo el día que me gasté la pasta) veo que mi argumento de: seguro que hay alguna manera de hacerlo más sencillo, era totalmente cierto.

Existe un tipo de colección en .NET del tipo IDictionary que nos permite almacenar pares de datos con el formato (clave, valor). Haciendo lo mismo que con el sistema anterior pero de una forma mucho más elegante, compacta y, sobre todo, potente por los métodos implícitos.

Dim lista1 As New Hashtable
lista1.Add(0, "Juan Quijano")


Anda que no hay diferencia en líneas de código ni na’. Además me permite poder sacar un listado de todas las entradas de forma muy sencilla.

For Each personas As DictionaryEntry In lista1
Response.Write(personas.Key & " " & personas.Value & "
")
Next


O invocar a cualquier registro en la colección a través de su indice. Sin que rompa si invoco a un indice que no existe (maldito error por IndexOutOfRange)

Response.Write(lista1(0))

Osea, si que sí había una forma más corrécta y elegante de hacer las cosas… je, je, je.

1 comentario:

Anónimo dijo...

Más elegante que yo, en todos los sentidos, no hay nadie in the whole world, mi papito... :D

Julio

PD: Ya investigaré yo esto del IDictionary. No es que no me fíe de ti... :P

PD 2: No vale comparar una utilidad de Visual con "la programación manual".