C#

【C#】ContainsKeyはKeyの存在チェックです【Dictionary】

アイキャッチ(c_sharp)

こんにちは!
なかむぅです。

C#のコードを読んでいるとContainsKey(TKey key)というものがでてきて

なんだこれ

となったので調べてみました。

結論、ContainsKeyはKeyの存在チェック

ContainsKeyはDictionaryクラスにあるKeyの存在チェックができるメソッドでした。

Contains・・・含む

なのでContainsKeyで「キーを含んでいるかどうか」ですね。

元をたどっていくとContainsKeyが使用されている変数やプロパティはDictionary型になっていると思います。

ContainsKeyの使い方

  • hogeをキーに持つ値が入っているhogeDictionary
  • piyoをキーに持つ値が入っているpiyoDictionary

といった二つのDictionaryを用意しました。

この二つのDictionaryを「hoge」、「piyo」それぞれのKey名でチェックします。


static void Main(string[] args)
{
	// hogeをキーに持つ値が入っているhogeDictionary
	var hogeDictionary = new Dictionary<string, string>();
	hogeDictionary.Add("hoge", "hogehoge");

	// piyoをキーに持つ値が入っているpiyoDictionary
	var piyoDictionary = new Dictionary<string, string>();
	piyoDictionary.Add("piyo", "piyopiyo");

	Console.WriteLine("hogeDictionaryを調べます");
	CheckKey(hogeDictionary);

	Console.WriteLine("piyoDictionaryを調べます");
	CheckKey(piyoDictionary);
}

// hoge、piyoそれぞれのKey名でチェックする
private static void CheckKey(Dictionary<string, string> dictionary)
{
	var hoge = "hoge";
	if (dictionary.ContainsKey(hoge))
	{
		Console.WriteLine($"「{hoge}」のKeyには「{dictionary[hoge]}」が入っています");
	}
	else
	{
		Console.WriteLine($"「{hoge}」のKeyには何も入っていません");
	}

	var piyo = "piyo";
	if (dictionary.ContainsKey(piyo))
	{
		Console.WriteLine($"「{piyo}」のKeyには「{dictionary[piyo]}」が入っています");
	}
	else
	{
		Console.WriteLine($"「{piyo}」のKeyには何も入っていません");
	}
	Console.WriteLine();
}
結果

HogeDictionaryを調べます
「hoge」のKeyには「hogehoge」が入っています
「piyo」のKeyには何も入っていません

piyoDictionaryを調べます
「hoge」のKeyには何も入っていません
「piyo」のKeyには「piyopiyo」が入っています

想定通りの結果になりました。

Dictionaryから値を取得するならTryGetValueがおすすめ

ContainsKeyも便利なのですが、値を取得するのであればTryGetValueがおすすめです。

TryGetValueはKeyの存在チェックと同時に値の取得も行ってくれるので、ContainsKeyのように

  • ContainsKeyに渡すKey
  • 値を取得するKey

と、わざわざKeyを2回書くしなくてもよくなります。

処理速度もContainsKey比べて速いので、使用するならTryGetValueを使用しましょう。

詳しくはこちらの記事をご覧ください。

アイキャッチ(c_sharp)
【C#】ContainsKey VS TryGetValue!!速いのはTryGetValueこんにちは! なかむぅです。 DictionaryクラスのメソッドでKeyが存在するかチェックできる Contai...


私の会社で一緒に働きませんか?

私が働く会社では、一緒に働いてくれるエンジニアを募集しています♪

こんな人がオススメ
  • 長く働いていても年収が全然上がらない…一気に年収を上げたい
  • 残業をしたくてしているわけではないので、残業代はしっかりと出して欲しい
  • やりたいことに挑戦させてもらえない…自分がしてみたいことに挑戦したい
  • 通勤時間が長すぎるから、できるだけ短くしたい
  • もっと勉強したいから、書籍代や資格の受験料など負担してくれるところに入りたい
  • 現場に駆り出されてからは放置プレイ…相談できる人も先輩も居ないので、自分の状況をちゃんと理解してくれるところで働きたい

上記内容に1つでも当てはまる場合は、ぜひお声がけください。
私のサイトから応募していただいた方にはお好きなギフト券5000円分プレゼントさせていただきます(条件あり)。

詳細ページ


まとめ

ContainsKeyはKeyの存在チェックで使用されていました。

以上、DictionaryContainsKeyについてでした!

いやここは違うだろ

と思った方はコメントいただけると嬉しいです。

最後までお読みいただきありがとうございました!

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です