I do not think that is possible. However, you might want to use a
List(Of T)[
^] or
Dictionary(Of T)[
^]. They are a bit more '.NETty' and easier to use. There is a small difference between Arrays and Lists(Of T), but when used correctly I don't think Arrays can do anything that Lists(Of T) can't. Of course some Array/List(Of T) pro will now prove me wrong... ;p
Edit, I understood my answer was not sufficiently explained:
If you use a Class with a unique ID you would probably only need a List(Of T) which you can then reference by its ID through, perhaps a LINQ query.
Dim shoppingList As New List(Of ShoppingItem)
Dim item = (From i In shoppingList.Items Where i.ID = "item1").FirstOrDefault
When you do need a Dictionary(Of T) you could use its Key as a string, in OP's case "ItemName" and a Class that represents Item. I doubt it is only a String. In most real world apps you'd have a Class.
Dim shoppingDict As New Dictionary(Of String, ShoppingItem)
Dim item = shoppingDict.Item("ItemName")
If you would need an item which only has a string you should see cPallini's answer.