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

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

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

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

Q&A

解決済

2回答

6159閲覧

[C#]List<int[]>とint[]の比較

mitts

総合スコア17

C#

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

0グッド

0クリップ

投稿2017/03/06 02:03

下記のプログラムを走らせてもif文の中を通ってくれません
これは内部的にアドレスで比較しているから一致しないのでしょうか?
原因をご存知の方 ご教授ただければ幸いです。

またint[]同士の比較をしたい場合はどんなメソッドを使えばよいでしょうか

よろしくお願いします。

C#

1 int[] test1 = new int[] { 1, 2 }; 2 int[] test2 = new int[] { 1, 2 }; 3 4 List<int[]> list = new List<int[]>(); 5 list.Add(test2); 6 if (list.Contains(test1)) 7 { 8 Console.WriteLine("一致"); 9 }

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

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

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

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

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

guest

回答2

0

ベストアンサー

Contains は Equals メソッドを使って検索します。配列は中身が同じでも別のインスタンスでは Equals は false を返すため、この方法は使えません。
ラッパークラスを作るか、一つ一つ比較しましょう。

2つの配列(またはコレクション)を比較して、等しいか調べる

追記

私であればこう書きます。

C#

1if (list.Any(a => a.SequentialEqual(test1))) { 2 Console.WriteLine("一致"); 3}

追記

不適切な言葉を改めました。
別々に宣言されたもの → 別のインスタンス

追記

スペルミスを改めました。
Eqals → Equals
SequentialEqal → SequentialEqual

普段コード補完に頼り切っている証拠ですね。

投稿2017/03/06 02:12

編集2017/03/06 03:43
Zuishin

総合スコア28660

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

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

alg

2017/03/06 03:31

Eqal → Equal では?
Zuishin

2017/03/06 03:41

alg さんありがとうございます。その通りです。書き換えます。
mitts

2017/03/06 03:47

丁寧な回答ありがとうございます こちらも確認してうまくいきました 本当にたすかりましたー
guest

0

こういうのはどうでしょう?

C#

1 2int[] test1 = new int[] { 1, 2 }; 3int[] test2 = new int[] { 1, 2 }; 4 5List<int[]> list = new List<int[]>(); 6list.Add(test2); 7 8foreach(int[] item in list) 9{ 10 if (test1.SequenceEqual(item)) 11 { 12 Console.WriteLine("一致"); 13 } 14} 15

投稿2017/03/06 02:16

YAmaGNZ

総合スコア10258

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

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

mitts

2017/03/06 03:48

sequenceつければ別インスタンスでも要素をみて判断してくれるんですね 回答ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問