tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルCollectionについて
記事No6031
投稿日: 2007/08/08(Wed) 14:10
投稿者ぷらぷら
いつもお世話になってます。
VB2003を使用しています。
コレクションにデータを追加していったところ例外が発生しました。

Dim col As New Collection

col.Add("hoge", "AA")
col.Add("hogehoge", "aa")

「System.ArgumentException' のハンドルされていない例外が
 microsoft.visualbasic.dllで発生しました。
 追加情報 : 追加に失敗しました。重複するキーの値が指定されました。」

キーとして指定した"AA"と"aa"が同一と認識されているようですが、
これはVBの仕様なのでしょうか?

ちなみに以下のように変更したところ、データの追加には成功しました。

a.Add("hoge", "AA".GetHashCode.ToString)
a.Add("hogehoge", "aa".GetHashCode.ToString)

[ツリー表示へ]
タイトルRe: Collectionについて
記事No6032
投稿日: 2007/08/08(Wed) 14:27
投稿者よねKEN
> キーとして指定した"AA"と"aa"が同一と認識されているようですが、
> これはVBの仕様なのでしょうか?

Microsoft.VisualBasic.Collectionクラスの仕様ですね。
これはVB6以前のCollectionクラスとの互換のために用意されているクラスだと思いますので、
VB6以前のCollectionと同様にキーは大文字小文字を区別しない仕様となっているようです。

既存VB6プログラムからのアップグレードの案件でなければ、
あえてCollectionクラスを使わなくてもよいと思います。

System.Collections名前空間、System.Collections.Specialized名前空間以下の
コレクションクラスをお勧めします。Hashtableとか。

[ツリー表示へ]
タイトルRe^2: Collectionについて
記事No6037
投稿日: 2007/08/08(Wed) 17:45
投稿者ぷらぷら
お返事ありがとうございます

> Microsoft.VisualBasic.Collectionクラスの仕様ですね。
> これはVB6以前のCollectionクラスとの互換のために用意されているクラスだと思います
>ので、 VB6以前のCollectionと同様にキーは大文字小文字を区別しない仕様となっている
>ようです。

仕様ですか…
初めて知りました。

> 既存VB6プログラムからのアップグレードの案件でなければ、
> あえてCollectionクラスを使わなくてもよいと思います。
>
> System.Collections名前空間、System.Collections.Specialized名前空間以下の
> コレクションクラスをお勧めします。Hashtableとか。

値を取り出す時にインデックスとキーの両方が使えたら便利だなぁと思ってCollectionを
使っていました。

[ツリー表示へ]