質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

862閲覧

DictionaryとReadLineを使ったif文について

P_ms

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2022/04/27 16:53

実現したいこと

Console.ReadLineを使い、dictionaryに対応している単語であればdeta[s]を出力。対応していなければ、対応していませんと出力する。

発生している問題・エラーメッセージ

if(s == data.Keys)の部分でエラーが出てしまいます。

該当のソースコード

C#ここに言語名を入力

1ソースコード 2```namespace practice20 3{ 4 class Program 5 { 6 static void Main(string[] args) 7 { 8 Dictionary<string, string> data = new Dictionary<string, string>(); 9 string s; 10 data["cat"] = "猫"; 11 data["dog"] = "犬"; 12 data["bird"] = "鳥"; 13 data["tiger"] = "虎"; 14 // 15 Console.Write("英語で動物の名前を入力してください:"); 16 s = Console.ReadLine(); 17 // 18 if(s == data.Keys) 19 { 20 Console.WriteLine("{0}です", data[s]); 21 } 22 else 23 { 24 Console.WriteLine("対応していません"); 25 } 26 } 27 } 28} 29 30### 試したこと 31 32if()のカッコ内の思いつく限りは調べ、試しました。ですが、調べ方が悪かったのかReadLineを使ったdictionaryの使い方にヒットしませんでした... 33### 補足情報(FW/ツールのバージョンなど) 34 35ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/04/27 23:03

エラーメッセージを書くようにしましょう。
P_ms

2022/04/28 14:50

遅くなってすみません。次からは気を付けて使用させていただきます。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

キーがDictionaryに存在するかを判定するには、ContainsKeyメソッドが使えます。

Dictionary<TKey,TValue>.ContainsKey(TKey) メソッド (System.Collections.Generic) | Microsoft Docs

data.Keysを使うならLINQで次のように書けますが、ContainsKeyを利用した方が明示的で他人が理解しやすいと思います。

if (data.Keys.Any(key => key == s)) {

Enumerable.Any メソッド (System.Linq) | Microsoft Docs

投稿2022/04/27 20:08

編集2022/04/27 20:19
jhashimoto

総合スコア838

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

P_ms

2022/04/28 14:48

遅くなってすみません。完全に知らないメソッドなので助かりました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問