Home All Groups Group Topic Archive Search About

position in array using a string

Author
25 Apr 2006 7:00 AM
Tim
hi all,

not quite sure how to ask this, but here goes...

I have an array of values

a(0)="SMITH"
a(1)="JOHN"

I need to be able to reference each element using a string...

a("lastname") should return "SMITH"
a("firstname") should return "JOHN"

in much the same way as referencing a control in a collection of
controls, or an item in a collection of items.

any clues on how to achieve this?

(of course, everything is dynamic. I don't know that "lastname" and
"firstname" even exist before runtime)

cheers

Author
25 Apr 2006 9:20 AM
Larry Lard
Tim wrote:
Show quoteHide quote
> hi all,
>
> not quite sure how to ask this, but here goes...
>
> I have an array of values
>
> a(0)="SMITH"
> a(1)="JOHN"
>
> I need to be able to reference each element using a string...
>
> a("lastname") should return "SMITH"
> a("firstname") should return "JOHN"
>
> in much the same way as referencing a control in a collection of
> controls, or an item in a collection of items.
>
> any clues on how to achieve this?

The general name for the type of collection that achieves this is
"dictionary". A real-world dictionary maps 'words' to 'meanings' - in
..NET we say a dictionary maps 'keys' to 'values'. Both keys and values
can be of any type you like. Here both keys and values would be of type
String.

In 1.x (VB2002/3) you could just use a Hashtable, or to enforce strict
typing derive your own class from DictionaryBase (both in
System.Collections).

In 2.0 (VB2005) use Dictionary(Of String,String) from
System.Collections.Generic.

--
Larry Lard
Replies to group please
Author
25 Apr 2006 10:30 AM
Tim
dictionary heh (2005), I'll investigate further.

many thanks.

any sample code?

cheers
Author
25 Apr 2006 10:34 AM
Larry Lard
Tim wrote:
> dictionary heh (2005), I'll investigate further.
>
> many thanks.
>
> any sample code?

There's an example in the main doc topic for Dictionary(Of K,V) at

<http://msdn2.microsoft.com/en-us/library/xfhwa508(VS.80).aspx>

--
Larry Lard
Replies to group please
Author
25 Apr 2006 1:22 PM
Cor Ligthert [MVP]
Tim,

As alternative not so nice done

\\\
Public Class Test
    Public Shared Sub Main()
        Dim a As New List(Of names)
        a.Add(New names("John", "Smith"))
        MessageBox.Show(a(0).mFirstname & " " & a(0).mLastname)
    End Sub
End Class
Public Class names
    Public mLastname As String 'should be as properties
    Public mFirstname As String 'should be as properties
    Public Sub New(ByVal firstname As String, _
    ByVal lastname As String)
        mLastname = lastname
        mFirstname = firstname
    End Sub
End Class
///

I hope this helps,

Cor


Show quoteHide quote
"Tim" <Citizen10Be***@gmail.com> schreef in bericht
news:1145948457.981755.228670@e56g2000cwe.googlegroups.com...
> hi all,
>
> not quite sure how to ask this, but here goes...
>
> I have an array of values
>
> a(0)="SMITH"
> a(1)="JOHN"
>
> I need to be able to reference each element using a string...
>
> a("lastname") should return "SMITH"
> a("firstname") should return "JOHN"
>
> in much the same way as referencing a control in a collection of
> controls, or an item in a collection of items.
>
> any clues on how to achieve this?
>
> (of course, everything is dynamic. I don't know that "lastname" and
> "firstname" even exist before runtime)
>
> cheers
>
Author
26 Apr 2006 11:14 AM
Tim
thanks guys, dictionary works a treat. I think this will get a lot of
use!