投稿者 るきお  (社会人) 投稿日時 2011/3/27 11:56:21
Dictionaryクラスの使い方の前にVBとして構文がすごくおかしいです。
dict.add("001","aaa")のような操作はFunction~End Function、Sub ~ End Sub, Property ~ End Propertyの間に書かなければならず、シンさんのプログラムでは明らかな構文エラーです。

クラスの作り方は初級講座第46回「クラスの作成」で紹介していますので、ぜひ参照してください。
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard46.htm

>3行目でdictを宣言しているつもりですが、4行目でdictの「宣言が必要です」と言われてしまいます。
「宣言が必要です」の意味は下記で説明されています。
http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=JA-JP&k=k(VBC30188);k(VS.ERRORLIST);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22)&rd=true

今回は、「非宣言ステートメントをプロシージャの本体に移動します。」に合致します。
つまり、冒頭に書いたようにここは宣言を書く場所であって、操作のプログラムは書くことができないという意味です。『この場所には操作のプログラムではなく、宣言を書く必要があります。』と受け取るとよいと思います。

シンさんのやりたいことにできるだけ近づけようとするとプログラムは以下のようになります。
  
Imports System.Collections.Generic
Public Class MyDictionary
    Public dict As New Dictionary(Of StringString)

    Public Sub New()
        dict.Add("001""aaa")
        dict.Add("002""bbb")
        dict.Add("003""ccc")
        '… 
    End Sub

End Class


この場合、次のようにして値を取得することができます。
  
Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Button1.Click

        Dim id As String
        Dim item As New MyDictionary

        id = item.dict("001")

        MsgBox(id)

    End Sub
End Class


Private item As MyDictionary
id = item.dict ("001")

このコードにもいろいろ問題があり、どのようなクラスを作成してもこのコードのような呼び出し方はできません。
その理由
・MyDictionaryがNewされていないので、この状態ではitemのプロパティは呼び出せない。
・id = item.dict("001")のような操作はFunction~End Function、Sub ~ End Sub, Property ~ End Propertyの間に書かなれければいけないが、Private item As MyDictionaryという宣言はそれらの間に書くことができず、要するにこの2行を続けて書くことはありえない。