C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: HashSetの要素アクセス


(過去ログ 103 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■61501 / inTopicNo.1)  HashSetの要素アクセス
  
□投稿者/ 初心者もどき (1回)-(2011/08/17(Wed) 09:10:21)

分類:[.NET 全般] 

VS2010 fw 4.0

List<string> workList = new List<string>();
workList.Add("aaa");
workList.Add("bbbb");
workList.Add("ccccc");
string temp0 = workList[1];
Console.WriteLine(temp0);

HashSet<string> workHash = new HashSet<string>();
workHash.Add("11");
workHash.Add("222");
workHash.Add("3333");

string temp1 = workHash[1]; // 書けない 

workHashの各要素にアクセスする方法を教えてください。

引用返信 編集キー/
■61502 / inTopicNo.2)  Re[1]: HashSetの要素アクセス
□投稿者/ 魔界の仮面弁士 (2310回)-(2011/08/17(Wed) 10:03:42)
No61501 (初心者もどき さん) に返信
> workHashの各要素にアクセスする方法を教えてください。

HashSet<T> の要素を取り出す場合には、基本は、
 ・foreach
 ・ToArray 拡張メソッド
 ・ToList 拡張メソッド
等で列挙することになるでしょう。

HashSet<T> は、いわば Dictionary<TKey, TValue> の
キー部分だけを管理するような目的で使われるコレクションです。

その性質上、通常は個々の要素に対してアクセスするといった使い方ではなく、
Contains メソッドでデータが登録済みかどうかを調べるといった使用方法となります。
List<T> のように位置番号を指定して取り出すといった種類のコレクションではありません。

順序指定で無理矢理アクセスするのなら、ToArray で配列化してから取り出すか、
もしくは linq/匿名メソッドを用いて
 string temp2 = workHash.Skip(1).First();
のように書くことができますが……順序が重要なら List<T> を使うべきかと思いますよ。
引用返信 編集キー/
■61503 / inTopicNo.3)  Re[2]: HashSetの要素アクセス
□投稿者/ Hongliang (801回)-(2011/08/17(Wed) 10:31:35)
後は GetKeyForItem が自分自身を返す KeyedCollection あたりかしら。
引用返信 編集キー/
■61504 / inTopicNo.4)  Re[1]: HashSetの要素アクセス
□投稿者/ 初心者もどき (2回)-(2011/08/17(Wed) 12:23:06)
wf3.5の時

workHash.Items[0] なんかてアクセスした気がした。
記憶違いたったのかな...


解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -