Simulando la inicialización de colecciones de Visual Basic 10 con Visual Basic 9
A colación de una entrada de Bruno acerca de la nueva característica de Visual Studio 10 y en concreto de Visual Basic 10 donde podemos inicializar colecciones tipadas con Visual Basic 10, me surgió la duda casi de inmediato de si en Visual Basic 9 podríamos simular este mismo mecanismo.
La respuesta es sí.
Lo que ocurre, es que la forma en la que lo hace Visual Basic 10 es más limpia y nos ahorra el escribir líneas de código, aunque con Visual Basic 9, tampoco es que tengamos que escribir muchas más líneas de código, tan solo una conversión por medio.
El ejemplo que nos proponía Bruno, partía del ejemplo básico y cuyo código sería el siguiente:
Dim listNames = New List(Of String)
listNames.Add("Juan")
listNames.Add("Jose")
listNames.Add("Valentino")
Respecto a la novedad incluida en Visual Basic 10, el código anterior se podría simplificar por este otro:
Dim list = New List(Of String) From {"Juan", "Jose", "Valentino"}
Pero... ¿cómo podríamos hacer esto mismo con Visual Basic 9?... porque en realidad se puede hacer.
La equivalencia en Visual Basic 9 pasa en este ejemplo por utilizar LINQ.
El código equivalente de Visual Basic 9 ó Visual Basic 2008 a la nueva característica de Visual Basic 10 sería el siguiente:
Dim personas() As String = {"Juan", "Jose", "Valentino"}
Dim listNames As List(Of String) = (From persona In personas _
Select persona).ToList
Finalmente, para consumir el contenido, podría servir esta pequeña instrucción:
Dim elementos As String = ""
For Each elemento In listNames
elementos &= elemento & Environment.NewLine
Next
MessageBox.Show(elementos)
Como podemos ver en este ejemplo/demostración, a veces podemos "simular" alguno de los comportamientos o características nuevas que se incorporarán posiblemente a la versión final de Visual Basic 10.
Es... otra forma de hacer las cosas, ni mejor ni pero, sino simplemente otra forma diferente.
Espero que ayude.