Ho notato, e come non avrei potuto, la potenza dei Generics in 2005. Oltre a poter consumare i tipi Generics in 2005 possiamo anche crearne di nostri. Il classico esempio da proporre è quello di una Routine che chiameremo Swap e che andrà a ordinare valori di qualsiasi tipo.

Private Sub swap(Of ItemType)(ByRef v1 As ItemType, ByRef v2 As ItemType)
     Dim temporary As ItemType
     temporary = v1
     v1 = v2
     v2 = temporary
End Sub

Invoco il metodo swap :

swap(Of Integer)(campo1, campo2)

A questo punto la cosa piu' interessante, a parer mio, è andare a vedere quel che combina il JIT, e infatti JIT ha convertito il valore ItemType in Integer e cosi' tutto il resto della nostra Routine arrivando a questo risultato :

Private SUb Swap(ByRef v1 As Integer, ByRef v2 As Integer)
     Dim temporary As Integer
     temporary = v1
     v1 = v2
     v2 = temporary
End Sub

E' chiaro che se volessimo passare la funzione swap a dei tipi String basterebbe cambiare la tipologia di ItemType in string ... A questo punto direi Addio Object