Dictionaryクラスの使い方を教えてください。 への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 シン  (社会人) 投稿日時 2011/3/27 21:57:10
るきお様

ご指導していただきありがとうございます。
クラスについてあらためて勉強させていただき、無事に解決することができました。
投稿者 るきお  (社会人) 投稿日時 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 String, String)

    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.Object, ByVal 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行を続けて書くことはありえない。
投稿者 シン  (社会人) 投稿日時 2011/3/27 02:34:13
Dictionaryクラスの使い方でつまずいています。VB2010使用です。
コードは以下ですが、4行目で「宣言が必要です」とのエラーが出現してしまいます。

Imports System.Collections.Generic
Public Class MyDictionary
    Public dict As New Dictionary(Of String, String)
    dict.add("001","aaa")
End Class

このように「MyDictionary」クラスを作成して、Addメソッドを用いて数百のキーと値を追加したいと考えています。そのあとは、以下のようにして

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

idにaaaという値を代入したいと考えています。

3行目でdictを宣言しているつもりですが、4行目でdictの「宣言が必要です」と言われてしまいます。
一体どうすればいいのでしょうか。