■91717 / ) |
Re[3]: VB.NETで他クラスでの配列呼出方法が知りたい |
□投稿者/ 魔界の仮面弁士 (2257回)-(2019/07/24(Wed) 00:02:15)
|
■No91713 (HYDE2019 さん) に返信 > プロパティとの事で、こういう書き方であってますでしょうか? いや、明らかに駄目でしょう。
> Public Property hogehoge() As String > Get > For Each entry As KeyValuePair In hoge() > Dim Ken As String = entry.Key > Dim City As String = entry.Value > Return Format({"0" "1"},Ken ,City) > Next > End Get > End Proprty
(1) Property 内に Get ブロックしかありません。これではコンパイルエラーになるでしょう。 Set ブロックも記述するか、または ReadOnly Property にすべきです。
(2) hoge はフィールド変数なので、後ろの丸括弧は余計です。これではコンパイルエラーとなるでしょう。 括弧を外して In hoge もしくは In Me.hoge と記述してください。
(3) 列挙される型は As KeyValuePair ではありません。これではコンパイルエラーとなるでしょう。 この場合は As KeyValuePair(Of String, String) です。というか As 句を省略した方が手っ取り早いです。
(4) ループ内で Return してしまったら、最初の一件目を返却しただけで終わってしまいます。 エラーにはなりませんが、これでは列挙している意味がありません。 複数件の県庁所在地情報を、どのような文字列として返すことを期待しているのでしょうか?
(5) hoge 内にデータが 0 件だった場合に、何を Return するかが明示されていません。 自動的に Nothing が返されるのでエラーにはなりませんが、コンパイラ警告として報告されてしまうでしょう。
(6) Format 関数の使い方が出鱈目です。正しくは第一引数がデータ、第二引数が書式です。 String.Format メソッドであれば、第一引数が書式、第二引数以降がデータ群ですが、 いずれにせよダブルクォーテーションや波括弧の指定が間違っているので、コンパイルエラーとなるでしょう。
Public Class Class1 Private hoge As New Dictionary(Of String, String)() From { _ {"東京都", "新宿区"}, _ {"埼玉県", "さいたま市"}, _ {"神奈川県", "横浜市"}, _ {"千葉県", "千葉市"}, _ {"茨城県", "水戸市"}, _ {"栃木県", "宇都宮市"}, _ {"群馬県", "前橋市"} _ }
'列挙案1:イテレーターとして実装する Public ReadOnly Iterator Property Property1() As IEnumerable(Of String) Get For Each entry As KeyValuePair(Of String, String) In hoge Yield String.Format("{0}, {1}", entry.Key, entry.Value) Next End Get End Property
'列挙案2:配列を返すプロパティとして実装する Public ReadOnly Property Property2() As String() Get Return hoge.Select(Function(e) $"{e.Key}, {e.Value}").ToArray() End Get End Property
'列挙案3:改行で区切った文字列として返すよう実装する Public ReadOnly Property Property3() As String Get Dim sb As New System.Text.StringBuilder() For Each key In hoge.Keys sb.AppendLine(key & "の県庁所在地は" & hoge(key) & "です。") Next Return sb.ToString() End Get End Property End Class
|
|