まず{1,1}の要素を持つリストAを作ります。
その後Aの先頭の要素{1}を持ったリストBを作ります
そしてAの先頭以外の要素{1}を持ったリストCを作ります。
最後に{1}の要素を持ったリストDを作ります。
これにより{1}の要素を持つリストB,C,Dが作れたわけですが、要素が同じでもB==D、C==Dの条件文ははじかれます。おそらくリストのCapacityが違うため同じ配列だと認識されないのが原因だと思うのですが、Capacityが違くとも同じ配列として認識させる方法はリストの要素を1つ1つ照らし合わせるしかないのでしょうか?教えてください。
C#
1using System.Collections.Generic; 2using System; 3using System.Linq; 4using System.ComponentModel; 5public class test3 6{ 7 static void Main() 8 { 9 List<string> A = new List<string>() { "1", "1" }; 10 List<string> B = head_get(A); 11 List<string> C = Beheading(A); 12 List<string> D = new List<string>() { "1" }; 13 if (B == D) { Console.WriteLine("B=D"); } else { Console.WriteLine("B!=D"); } 14 if (C == D) { Console.WriteLine("C=D"); } else { Console.WriteLine("C!=D"); } 15 } 16 static List<string> head_get(List<string> list) 17 {//先頭の要素のみを返す 18 List<string> head = new List<string>(); 19 head.Add(list[0]); 20 return head; 21 } 22 static List<string> Beheading(List<string> list) 23 {//先頭以外の要素を返す 24 if (list.Count == 0) return list; 25 List<string> body = new List<string>(list); 26 body.RemoveAt(0); 27 return body; 28 } 29}
「ふたつの参照型に対して == とはいかなる意味か」を理解したうえでの質問ですか?
> リストの要素を1つ1つ照らし合わせるしかないのでしょうか?
はいかいいえで言えばはいですが、自分でループを書かなくても便利なメソッドがあります。
等値演算子 (C# リファレンス)
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/equality-operators#equality-operator-
聞く前にググって調べてこういうの ↑ を読みましょう。その前に値型と参照型の違いが分かってなかったらそれも調べてみましょう。
回答1件
あなたの回答
tips
プレビュー