配列のリストでのContains()の奇妙な動作

ファビオ・ルス

配列のリストがあり、リストに配列が存在するかどうかを確認する必要があります。このような:

Guid guid1 = Guid.NewGuid();
Guid guid2 = Guid.NewGuid();

List<Guid[]> listOfArrays = new List<Guid[]>();

listOfArrays.Add(new[] { guid1, guid2});

if (listOfArrays.Contains(new[] { guid1, guid2 }))
  Console.WriteLine(@"List of Array contains guid1 and guid2");
else
  Console.WriteLine(@"List of Array does not contains guid1 and guid2");

Console.ReadKey();

出力は次のとおりです。

配列のリストにguid1とguid2が含まれていません

ただし、配列の代わりにタプルのリストを使用すると、すべてが期待どおりに機能します

Guid guid1 = Guid.NewGuid();
Guid guid2 = Guid.NewGuid();

List<Tuple<Guid, Guid>> listOfTuples = new List<Tuple<Guid, Guid>>();

listOfTuples.Add(new Tuple<Guid, Guid>(guid1, guid2));

if (listOfTuples.Contains(new Tuple<Guid, Guid>(guid1, guid2)))
   Console.WriteLine(@"List of Tuple contains guid1 and guid2");
else
   Console.WriteLine(@"List of Tuple does not contains guid1 and guid2");

Console.ReadKey();

出力は次のとおりです。

タプルのリストにはguid1とguid2が含まれています

だから私の質問は:なぜこれが起こるのですか?配列とタプルは参照型ですが、同様の等式比較を行うべきではありませんか?配列を使用したい場合、自分の状況で機能する「含む」を実行するにはどうすればよいですか?

SLaks

配列は参照によって比較されるため、機能しません。

タプルは値で比較するためにオーバーライドEquals()するため、機能します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Matlab配列での奇妙な動作

分類Dev

C配列での奇妙な動作

分類Dev

Java-配列での奇妙なジェネリックスの動作

分類Dev

C#LinqJSONネストされた配列の奇妙な動作

分類Dev

ネストされた配列操作の奇妙な動作、js

分類Dev

親を子にキャスト - 配列の奇妙な動作

分類Dev

並列ストリームのStream.spliteratorの奇妙な動作

分類Dev

Pythonリストの奇妙な動作

分類Dev

Javaの奇妙な配列の動作

分類Dev

C ++の奇妙な配列の動作

分類Dev

膨大な配列を持つCodePenでの奇妙なJavaScriptの動作

分類Dev

大きな配列でのC ++ / CUDAの奇妙な動作

分類Dev

PHP連想配列の奇妙な動作

分類Dev

gfortranでの暗黙のdoを使用した配列コンストラクターの奇妙な初期化動作

分類Dev

Pythonリスト連結での奇妙な動作

分類Dev

MVC投稿リストでの奇妙な動作

分類Dev

Javascript / ReactNativeでの奇妙な配列の動作

分類Dev

Cでの奇妙な行列配列の動作

分類Dev

状態更新後の配列マップでの奇妙な動作

分類Dev

配列NodeJS / CronでのforEachの奇妙な動作

分類Dev

奇妙な配列リストの結果?

分類Dev

javascriptで配列を作成するときの奇妙な動作

分類Dev

C#配列とRandom.NextDouble()での奇妙な動作

分類Dev

Typescript配列プッシュ、console.logでの奇妙な動作

分類Dev

PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

分類Dev

Visual Studio2013でのC ++ 11リストの初期化の奇妙な動作

分類Dev

奇妙なHashSetのcontains()の動作

分類Dev

静的char配列と動的char配列の奇妙な動作

分類Dev

文字列比較C ++での奇妙な動作

Related 関連記事

  1. 1

    Matlab配列での奇妙な動作

  2. 2

    C配列での奇妙な動作

  3. 3

    Java-配列での奇妙なジェネリックスの動作

  4. 4

    C#LinqJSONネストされた配列の奇妙な動作

  5. 5

    ネストされた配列操作の奇妙な動作、js

  6. 6

    親を子にキャスト - 配列の奇妙な動作

  7. 7

    並列ストリームのStream.spliteratorの奇妙な動作

  8. 8

    Pythonリストの奇妙な動作

  9. 9

    Javaの奇妙な配列の動作

  10. 10

    C ++の奇妙な配列の動作

  11. 11

    膨大な配列を持つCodePenでの奇妙なJavaScriptの動作

  12. 12

    大きな配列でのC ++ / CUDAの奇妙な動作

  13. 13

    PHP連想配列の奇妙な動作

  14. 14

    gfortranでの暗黙のdoを使用した配列コンストラクターの奇妙な初期化動作

  15. 15

    Pythonリスト連結での奇妙な動作

  16. 16

    MVC投稿リストでの奇妙な動作

  17. 17

    Javascript / ReactNativeでの奇妙な配列の動作

  18. 18

    Cでの奇妙な行列配列の動作

  19. 19

    状態更新後の配列マップでの奇妙な動作

  20. 20

    配列NodeJS / CronでのforEachの奇妙な動作

  21. 21

    奇妙な配列リストの結果?

  22. 22

    javascriptで配列を作成するときの奇妙な動作

  23. 23

    C#配列とRandom.NextDouble()での奇妙な動作

  24. 24

    Typescript配列プッシュ、console.logでの奇妙な動作

  25. 25

    PHP:オブジェクト型を配列にキャストした後の奇妙な配列の動作

  26. 26

    Visual Studio2013でのC ++ 11リストの初期化の奇妙な動作

  27. 27

    奇妙なHashSetのcontains()の動作

  28. 28

    静的char配列と動的char配列の奇妙な動作

  29. 29

    文字列比較C ++での奇妙な動作

ホットタグ

アーカイブ