C#のDictionary辞書クラスのサンプルコードの紹介

黄舟
リリース: 2017-05-07 10:17:14
オリジナル
1703 人が閲覧しました

説明
名前空間 System.Collection.Generic が含まれている必要があります
ディクショナリ内の各要素は、キーと値のペア (キーと値の 2 つの要素で構成されます) です
キーは一意である必要がありますが、値は一意である必要はありません一意であること
キーと値は任意の型 (例: string、int、カスタム タイプなど) にすることができる
キーを介して値を読み取る時間は O(1) に近い
バイアスキーと値のペア間の順序は定義できません

Usage:

    //定义
    Dictionary<string, string> openWith = new Dictionary<string, string>();
 

    //添加元素
    openWith.Add("txt", "notepad.exe");
    openWith.Add("bmp", "paint.exe");
    openWith.Add("dib", "paint.exe");
    openWith.Add("rtf", "wordpad.exe");
 

    //取值
    Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
 

    //更改值
    openWith["rtf"] = "winword.exe";
    Console.WriteLine("For key = \"rtf\", value = {0}.", openWith["rtf"]);
 

    //遍历key
    foreach (string key in openWith.Keys)
    {
        Console.WriteLine("Key = {0}", key);
    }
 

    //遍历value
    foreach (string value in openWith.Values)
    {
        Console.WriteLine("value = {0}", value);
    }

    //遍历value, Second Method
    Dictionary<string, string>.ValueCollection valueColl = openWith.Values;
    foreach (string s in valueColl)
    {
        Console.WriteLine("Second Method, Value = {0}", s);
    }

 

    //遍历字典
    foreach (KeyValuePair<string, string> kvp in openWith)
    {
        Console.WriteLine("Key = {0}, Value = {1}", kvp.Key, kvp.Value);
    }
 

    //添加存在的元素
    try
    {
        openWith.Add("txt", "winword.exe");
    }
    catch (ArgumentException)
    {
        Console.WriteLine("An element with Key = \"txt\" already exists.");
    }
 

    //删除元素
    openWith.Remove("doc");
    if (!openWith.ContainsKey("doc"))
    {
        Console.WriteLine("Key \"doc\" is not found.");
    }
 
    //判断键存在
    if (openWith.ContainsKey("bmp")) // True 
    {
        Console.WriteLine("An element with Key = \"bmp\" exists.");
    }

    //参数为其它类型 
    Dictionary<int, string[]> OtherType = new Dictionary<int, string[]>();
    OtherType.Add(1, "1,11,111".Split(&#39;,&#39;));
    OtherType.Add(2, "2,22,222".Split(&#39;,&#39;));
    Console.WriteLine(OtherType[1][2]);
 

//参数为自定义类型

//首先定义类

    class DouCube
    {
        public int Code { get { return _Code; } set { _Code = value; } } private int _Code;
        public string Page { get { return _Page; } set { _Page = value; } } private string _Page;
    } 

    //然后声明并添加元素
    Dictionary<int, DouCube> MyType = new Dictionary<int, DouCube>();
    for (int i = 1; i <= 9; i++)
    {
        DouCube element = new DouCube();
        element.Code = i * 100;
        element.Page = "http://www.doucube.com/" + i.ToString() + ".html";
        MyType.Add(i, element);
    }

    //遍历元素
    foreach (KeyValuePair<int, DouCube> kvp in MyType)
    {
        Console.WriteLine("Index {0} Code:{1} Page:{2}", kvp.Key, kvp.Value.Code, kvp.Value.Page);
    }
ログイン後にコピー

よく使用されるプロパティ

名前 説明

Comparer ディクショナリ内のキーが等しいかどうかを判断するために使用される IEqualityComparer を取得します。

Count Dictionary に含まれるキーと値のペアの数を取得します。 項目 指定されたキーに関連付けられた値を取得または設定します。
Keys Dictionary 内のキーを含むコレクションを取得します。
Values Dictionary の値を含むコレクションを取得します。

一般的なメソッド
名前 説明
Add 指定されたキーと値を辞書に追加します。
Clear Dictionary からすべてのキーと値を削除します。
ContainsKey Dictionary に指定されたキーが含まれているかどうかを判断します。
ContainsValue Dictionary に特定の値が含まれているかどうかを判断します。
Equals(Object) 指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (Object から継承されます。)
Finalize オブジェクトがガベージ コレクションによってリサイクルされる前にリソースの解放を試行し、他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。)
GetEnumerator Dictionary を反復処理する列挙子を返します。
GetHashCode は、特定のタイプのハッシュ関数として使用されます。 (Object から継承されます。)
GetObjectData System.Runtime.Serialization.ISerializable インターフェイスを実装し、Dictionary インスタンスをシリアル化するために必要なデータを返します。
GetType 現在のインスタンスのタイプを取得します。 (Object から継承されます。)
MemberwiseClone 現在のオブジェクトの浅いコピーを作成します。 (Object から継承されます。)
OnDeserialization System.Runtime.Serialization.ISerializable インターフェイスを実装し、逆シリアル化の完了後に逆シリアル化イベントをトリガーします。
削除 指定されたキーの値を Dictionary から削除します。
ToString 現在のオブジェクトを表す文字列を返します。 (Object から継承されます。)
TryGetValue 指定されたキーに関連付けられた値を取得します。

以上がC#のDictionary辞書クラスのサンプルコードの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート