回答編集履歴

2

指摘を反映

2022/06/28 07:18

投稿

draq
draq

スコア2573

test CHANGED
@@ -8,16 +8,15 @@
8
8
 
9
9
  > 同じ配列として認識させる方法はリストの要素を1つ1つ照らし合わせるしかないのでしょうか?
10
10
 
11
+ (さらに追記、というか訂正)
11
- これはその通りです。要素を一つずつ比較して全ての要素が同値かどうか判断してください。
12
+ ~~これはその通りです。要素を一つずつ比較して全ての要素が同値かどうか判断してください。~~
12
13
 
13
- ---
14
- (追記)
15
- ソッドを用意ると比較が楽かもしれません
14
+ Zuishinさからコントで指摘があったように、LINQ の `SequenceEqual` 使えばいいです。
16
15
  ```C#
17
- bool IsEqualsList<T>(IList<T> list1, IList<T> list2)
18
- => list1 != null &&
19
- list2 != null &&
16
+ using System.Linq;
17
+
20
- list1.Count == list2.Count &&
18
+ var list1 = new List<T>() { 1, 2, 3 };
21
- Enumerable.Range(0, list1.Count)
19
+ var list2 = new List<T>() { 1, 2, 3 };
20
+
22
- .All(i => EqualityComparer<T>.Default.Equals(list1[i], list2[i]));
21
+ var result = list1.SequenceEqual(list2); // => true
23
22
  ```

1

リスト比較用メソッドのサンプルを追記

2022/06/27 11:34

投稿

draq
draq

スコア2573

test CHANGED
@@ -10,4 +10,14 @@
10
10
 
11
11
  これはその通りです。要素を一つずつ比較して全ての要素が同値かどうか判断してください。
12
12
 
13
-
13
+ ---
14
+ (追記)
15
+ こんなメソッドを用意すると比較が楽かもしれません。
16
+ ```C#
17
+ bool IsEqualsList<T>(IList<T> list1, IList<T> list2)
18
+ => list1 != null &&
19
+ list2 != null &&
20
+ list1.Count == list2.Count &&
21
+ Enumerable.Range(0, list1.Count)
22
+ .All(i => EqualityComparer<T>.Default.Equals(list1[i], list2[i]));
23
+ ```