Just playing with Generics in Visual Basic Whidbey


My simple class:

Public Class Customer
Dim m_CustomerName As String
Dim m_CustomerID As Integer
Public Property CustomerName() As String
Get
Return m_CustomerName
End Get
Set(ByVal Value As String)
m_CustomerName = Value
End Set
End Property
Public Property CustomerID() As Integer
Get
Return m_CustomerID
End Get
Set(ByVal Value As Integer)
m_CustomerID = Value
End Set
End Property
End Class


Then creating a Generic List and working with it:
    Private Sub FillCustomers()
Dim myCustomers _
As New Generic.List(Of Customer)
Dim C As Customer
For i As Integer = 1 To 500
C = New Customer
C.CustomerID = i
C.CustomerName = “Name “ & i
myCustomers.Add(C)
Next
For Each cust As Customer In myCustomers
Debug.Print(cust.CustomerName)
Next
End Sub

Now, isn’t that nice?

Comments (16)

  1. Julie Lerman says:

    ooh – I have to add this part to my presentation:

    For Each cust As Customer In myCustomers

    Debug.Print(cust.CustomerName)

    Next

    God I have wanted to do that for years! <g>

  2. Aside from the new syntax but, that example doesn’t really show me anything about super special Generics per se. For example, where you have:

    Dim myCustomers _

    As New Generic.List(Of Customer)

    Change it to:

    Dim myCustomers _

    As New ArrayList

    Compile it in 2003 and run it. Voila!

  3. Cory Smith says:

    Darren, your missing the point of Generics. It’s giving you strongly typed collections without having to write a ton of code. For example, create a new class and tell it to Inherit CollectionBase. Put your cursor on CollectionBase and go to the help for it. From there, to the overview for CollectionBase and scroll down to the sample it shows. Now, you have something to compare what Duncan is pointing out and what you have to do today to accomplish the same sort of thing.

  4. Cory, yes I’m aware of how cool Generics are and when you will use them. My point is that the only thing that reading Duncan’s demo will give you is a glimpse of the new syntax.

    So, I guess if Duncan is saying:

    "Now, isn’t that nice?" (that migrating code will be simple)

    Then, I agree and I probably missed his point.

    But, if he is saying:

    "Now, isn’t that nice?" (that this *new* stuff rocks based on what I’ve shown you in this sample)

    Then, no… I don’t think that this demo shows much.

    I really only "piped-up" about it because I thought that I might have missed something important that was shown here.

  5. Ben Dover says:

    Woo yay *walks off*

  6. Andres Morales says:

    Hi, i change only two lines, but i don´t understand this line

    C.CustomerID = i

    is necesary?

    Thanks

  7. It isn’t necessary at all, I was just trying to actually do something with each item as I created them…. merely filler code.

  8. I have seen C# generic samples and can quite understand it. In the VB sample presented what I think was missing was to mention the Generic.List declaration I guess might be:

    namespace Generic

    {

    class List<T>

    {

    List(<T>) //constructor

    {…}

    }

    }

    And whose call in C# would be

    List<Custumer> myCustomers = new List<Customer>

    For me, what was to grab is that List<Custumer> myCustomers = new List<Customer> in C#, translates to Dim myCustomer As New Generic.List(Of Customer).

    Am I right? Any comment welcome.



    Luciano Evaristo Guerche

    Jacarei, SP, Brazil

    P.S.: I cannot believe that, I am able to write little C# snippets!

  9. Duncan,

    Is it possible to also create generic classes on VB.NET or just consume them? If your answer is that it is possible to create them, I wonder you would mind porting the article "An Introduction to C# Generics" found at http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/csharp_generics.asp to VB.NET.

    I read it and feel it is a good example.

    Regards,

    Luciano Evaristo Guerche

    Jacarei, SP, Brazil

  10. This is just cool. I already spend too much time creating typed custom collections. Generics should add another cool tool to add to the ‘ol toolbox.

    Thanks for the snipit Duncan.

  11. Hans Jergen Ohff says:

    Yet another boring comment on Generics because nobody can think of anything original to talk about.

  12. Hans Jergen Ohff says:

    Yet another boring comment on Generics because nobody can think of anything original to talk about.

  13. Matt says:

    The cool part that Darren wasn’t seeing would be changing the for each loop as follows:

    For i As Integer = 0 To myCustomer.Count – 1

    ‘ Notice the strong typing of the Item property

    Debug.Print(myCustomers.Item(0).CustomerName)

    Next