Generic Methods…

Someone suggested to me that VB.NET Whidbey didn’t have support for ‘Generic Methods’, so I quickly wrote a bit of sample code to check (yes, it does support Generic Methods) and I thought I’d post that test code for your amusement.

Public Class GenericMethodSample
    Public Sub Swap(Of T)(ByRef i As T, ByRef j As T)
        Dim temp As T
        temp = j
        j = i
        i = temp
    End Sub
End Class

Public Class Sample

    Public Sub TestSwap()
        Dim i, j As Integer
        i = 3
        j = 12

        Debug.WriteLine(i)
        Debug.WriteLine(j)
        Debug.WriteLine("-------")

        Dim gm As New GenericMethodSample
        gm.Swap(Of Integer)(i, j)
        Debug.WriteLine(i)
        Debug.WriteLine(j)


    End Sub

End Class

If you need the ‘blow-by-blow’ explanation of that code… the key lines to notice are;

    Public Sub Swap(Of T)(ByRef i As T, ByRef j As T)

Which declares a “Generic Method”, which is then strongly typed at runtime via code like this;

    gm.Swap(Of Integer)(i, j)

[Update]: Paul Vick points out that (Of Integer) can be skipped on the call, making it just

    gm.Swap(i, j)

because the compiler will infer the correct type argument.

Generic Methods…

One Response

  1. Nice clear example!

    Will have to find some useful places for this now…

    John Jones June 22, 2007 at 2:48 pm #

Leave a Reply