C#で配列オブジェクトが別の配列オブジェクトと等しいかどうかを確認する方法
C#である配列オブジェクトが別の配列オブジェクトと等しいかどうかを確認するには、Equals()メソッドを使用します。なお、このメソッドは配列の要素内容ではなく、参照(同じオブジェクトを指しているかどうか)を比較する点に注意が必要です。
例1:異なる配列オブジェクトを比較する
まず、2つの独立した文字列配列をEquals()メソッドで比較してみましょう。
using System;
public class Demo {
public static void Main(){
String[] strArr1 = new String[3] { "John", "Jacob", "Tim"};
String[] strArr2 = new String[3] { "Tom", "Brad", "Bradley"};
Console.WriteLine("1つ目の文字列配列...");
foreach(string val in strArr1){
Console.WriteLine(val);
}
Console.WriteLine("2つ目の文字列配列...");
foreach(string val in strArr2){
Console.WriteLine(val);
}
Console.WriteLine("両方の配列オブジェクトは等しいか? = " + strArr1.Equals(strArr2));
}
}出力
上記のコードを実行すると、次のような結果が出力されます。
1つ目の文字列配列... John Jacob Tim 2つ目の文字列配列... Tom Brad Bradley 両方の配列オブジェクトは等しいか? = False
strArr1とstrArr2はそれぞれ別々に生成された配列オブジェクトであり、メモリ上の異なる場所を参照しているため、結果はFalseになります。
例2:同一の配列オブジェクトを参照させる場合
続いて、一方の配列変数に他方の配列を代入した場合の動作を確認してみましょう。
using System;
public class Demo {
public static void Main(){
int[] arr1 = new int[5] { 10, 20, 30, 40, 50};
int[] arr2 = new int[5] { 25, 25, 40, 55, 70};
Console.WriteLine("1つ目の整数配列...");
foreach(int val in arr1){
Console.WriteLine(val);
}
Console.WriteLine("2つ目の整数配列...");
foreach(int val in arr2){
Console.WriteLine(val);
}
arr1 = arr2;
Console.WriteLine("両方の配列オブジェクトは等しいか? = " + arr1.Equals(arr2));
}
}出力
上記のコードを実行すると、次のような結果が出力されます。
1つ目の整数配列... 10 20 30 40 50 2つ目の整数配列... 25 25 40 55 70 両方の配列オブジェクトは等しいか? = True
ここでは「arr1 = arr2」という代入によって、arr1もarr2と同じ配列オブジェクトを参照するようになりました。そのため、Equals()メソッドの結果はTrueとなります。
補足:要素の内容を比較したい場合
Equals()メソッドは参照の一致を判定するだけなので、配列の要素がすべて同じかどうかを調べたい場合は、LINQのSequenceEqual()メソッドを使用します。例えば「arr1.SequenceEqual(arr2)」と記述することで、要素ごとの比較が可能です。用途に応じて使い分けるようにしましょう。
-
C#で配列の一部を別の配列にコピーする方法(Array.Copyメソッドの使い方)
C#では、Array.Copy()メソッドを使うことで、ある配列の一部(または全体)を別の配列へ簡単にコピーできます。ループ処理を自分で書く必要がなく、コードもすっきりと読みやすくなるのが特徴です。Array.Copy()メソッドの基本構文Array.Copy(src, dest, length);各パラメータの意味は以下の通りです。src … コピー元となる配列dest … コピー先の配列length … コピーする要素数使用例次のサンプルコードでは、要素数4の配列から先頭3つの要素を、要素数3の別の配列へコピーしています。using System; class Program {
-
【C#入門】Array.Copy()メソッドで配列の一部を別の配列にコピーする方法
C#では、Array.Copy()メソッドを使うことで、ある配列の一部(セクション)を別の配列へ簡単にコピーできます。このメソッドはSystem名前空間に属するArrayクラスの静的メソッドであり、インスタンスを生成せずに直接呼び出せるのが特徴です。 Array.Copy()メソッドの基本構文 Array.Copy(src, dest, length); 各パラメータの意味は以下のとおりです。 src … コピー元となる配列 dest … コピー先の配列 length … コピーする要素数 使用例 次のサンプルコードでは、要素数4の整数型配列から、先頭2つの要素を要素数2の別の配列へコピー