2017年08月 / 07月≪ 12345678910111213141516171819202122232425262728293031≫09月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2009.03.09 (Mon)

SortedList等でキーにEnumを使う

SortedList等ソートされるものでEnumをキーとした場合、何順になるのかなと思ったので試し。

結果は
Enumの要素に数値を設定した場合、設定した数値順になる。
Enumの要素に数値を設定しなかった場合、要素の宣言順になる。
Enumの要素を宣言した際、数値を入れないとデフォルトで0から値が自動で振られるから。
なんにせよ要素にふられた値順になるわけか。

テストコード


Enumの各要素に値を設定しない場合

using System;
using System.Collections.Generic;

namespace SpeedTestConsole
{
class Program
{
///
/// TestEnum
///

private enum TestEnum
{
two,
one,
seven,
ten,
five,
nine,
}

static void Main(string[] args)
{
// TestEnumをキーとしたソートされたリスト
SortedList sList = new SortedList();

// 適当な順に追加
sList.Add(TestEnum.seven, "なな");
sList.Add(TestEnum.nine, "きゅう");
sList.Add(TestEnum.ten, "じゅう");
sList.Add(TestEnum.five, "ご");
sList.Add(TestEnum.two, "に");
sList.Add(TestEnum.one, "いち");

// ソートされたIndex順に
for (int i = 0; i < sList.Count; i++)
{
// キー取得
TestEnum te = sList.Keys[i];
// 値取得
string v = sList.Values[i];
// 表示
Console.WriteLine("key:" + te + " value:" + v);
}

// コンソールがすぐ終わらない用キー入力待ち
Console.ReadKey();
}
}
}

↓出力結果
key:two value:に
key:one value:いち
key:seven value:なな
key:ten value:じゅう
key:five value:ご
key:nine value:きゅう


Enumの各要素に値を設定した場合

using System;
using System.Collections.Generic;

namespace SpeedTestConsole
{
class Program
{
///
/// TestEnum
///

private enum TestEnum
{
two = 2,
one = 1,
seven = 7,
ten = 10,
five = 5,
nine = 9,
}

static void Main(string[] args)
{
// TestEnumをキーとしたソートされたリスト
SortedList sList = new SortedList();

// 適当な順に追加
sList.Add(TestEnum.seven, "なな");
sList.Add(TestEnum.nine, "きゅう");
sList.Add(TestEnum.ten, "じゅう");
sList.Add(TestEnum.five, "ご");
sList.Add(TestEnum.two, "に");
sList.Add(TestEnum.one, "いち");

// ソートされたIndex順に
for (int i = 0; i < sList.Count; i++)
{
// キー取得
TestEnum te = sList.Keys[i];
// 値取得
string v = sList.Values[i];
// 表示
Console.WriteLine("key:" + te + " value:" + v);
}

// コンソールがすぐ終わらない用キー入力待ち
Console.ReadKey();
}
}
}

↓出力結果
key:one value:いち
key:two value:に
key:five value:ご
key:seven value:なな
key:nine value:きゅう
key:ten value:じゅう


 |  12:01  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑

Comment

コメントを投稿する

URL
コメント
パス  編集・削除するのに必要
非公開  管理者だけにコメントを表示
 

Trackback

この記事のトラックバックURL

この記事へのトラックバック

 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。