C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#で2つのStringDictionaryオブジェクトが等しいかどうかを確認する方法

C#で2つの StringDictionary オブジェクトが等しいかどうかを確認するには、Equals() メソッドを使用します。このメソッドは、比較対象のオブジェクトが同じインスタンス(同一の参照)を指している場合に True を返します。

なお、StringDictionary クラスは Equals() メソッドをオーバーライドしていないため、中身(キーと値)が完全に一致していても、別々のインスタンスであれば False が返される点に注意が必要です。

例1:参照の等価性を確認する

以下のコードは、Equals() メソッドを使って2つの StringDictionary オブジェクトを比較する例です。

using System;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      // 1つ目のStringDictionaryを作成
      StringDictionary strDict1 = new StringDictionary();
      strDict1.Add("A", "John");
      strDict1.Add("B", "Andy");
      strDict1.Add("C", "Tim");
      strDict1.Add("D", "Ryan");
      strDict1.Add("E", "Kevin");
      strDict1.Add("F", "Katie");
      strDict1.Add("G", "Brad");

      // 2つ目のStringDictionaryを作成
      StringDictionary strDict2 = new StringDictionary();
      strDict2.Add("A", "John");
      strDict2.Add("B", "Andy");
      strDict2.Add("C", "Tim");
      strDict2.Add("D", "Ryan");
      strDict2.Add("E", "Kevin");
      strDict2.Add("F", "Katie");
      strDict2.Add("G", "Brad");

      // strDict3にstrDict2の参照を代入
      StringDictionary strDict3 = new StringDictionary();
      strDict3 = strDict2;

      Console.WriteLine("Dictionary2とDictionary3は等しいか? = " + strDict2.Equals(strDict3));
      Console.WriteLine("Dictionary1とDictionary3は等しいか? = " + strDict1.Equals(strDict3));
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

Dictionary2とDictionary3は等しいか? = True
Dictionary1とDictionary3は等しいか? = False

strDict3 には strDict2 の参照が代入されているため、両者は同じオブジェクトを指しており、True が返されます。一方、strDict1 は内容が同じでも別のインスタンスであるため、False となります。

例2:要素を表示しながら比較する

次に、各ディクショナリの要素を表示したうえで比較する別の例を見てみましょう。

using System;
using System.Collections;
using System.Collections.Specialized;

public class Demo {
   public static void Main() {
      // 1つ目のStringDictionaryを作成
      StringDictionary strDict1 = new StringDictionary();
      strDict1.Add("A", "John");
      strDict1.Add("B", "Andy");
      strDict1.Add("C", "Tim");
      strDict1.Add("D", "Ryan");
      strDict1.Add("E", "Kevin");
      strDict1.Add("F", "Katie");
      strDict1.Add("G", "Brad");

      Console.WriteLine("StringDictionary1の要素...");
      foreach(DictionaryEntry d in strDict1) {
         Console.WriteLine(d.Key + " " + d.Value);
      }

      // 2つ目のStringDictionaryを作成
      StringDictionary strDict2 = new StringDictionary();
      strDict2.Add("A", "John");
      strDict2.Add("B", "Andy");
      strDict2.Add("C", "Tim");
      strDict2.Add("D", "Ryan");
      strDict2.Add("E", "Kevin");
      strDict2.Add("F", "Katie");
      strDict2.Add("G", "Brad");

      Console.WriteLine("\nStringDictionary2の要素...");
      foreach(DictionaryEntry d in strDict2) {
         Console.WriteLine(d.Key + " " + d.Value);
      }

      Console.WriteLine("\nDictionary2とDictionary1は等しいか? = " + strDict2.Equals(strDict1));
   }
}

出力結果

上記のコードを実行すると、次のような出力が得られます。

StringDictionary1の要素...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad

StringDictionary2の要素...
a John
b Andy
c Tim
d Ryan
e Kevin
f Katie
g Brad

Dictionary2とDictionary1は等しいか? = False

ポイントのまとめ

  • StringDictionary のキーは、格納時に小文字に変換されて保存されます。そのため、出力では「a」「b」のように小文字で表示されます。
  • Equals() メソッドによる比較は既定で参照の等価性を判定するため、内容が同じでも別インスタンス同士の比較結果は False になります。
  • 内容ベースで等価性を確認したい場合は、要素数や各キー・値をループで個別に比較する方法を採用するとよいでしょう。
  1. Python Pandasで2つのDataFrameの特定の列が等しいかどうかを確認する方法

    はじめにPandasでは、2つのDataFrameの特定の列が等しいかどうかを確認するために、equals()メソッドを使用します。このメソッドは、比較対象の要素がすべて一致していれば True を、1つでも異なれば False を返します。まず、2つの列(「Car」と「Units」)を持つDataFrame1を作成してみましょう。import pandas as pd dataFrame1 = pd.DataFrame( { Car: [BMW, Lexus, Audi, Mustang, Bentley, Jaguar], Units: [100, 150,

  2. Python Pandas入門:DataFrameオブジェクトが等しいかどうかを確認する方法

    PythonのPandasで2つのDataFrame(データフレーム)オブジェクトが等しいかどうかを確認するには、equals()メソッドを使用します。このメソッドは、2つのDataFrameが同じ形状・要素・値を持っている場合にTrueを返し、そうでなければFalseを返します。DataFrame1の作成まず、2つの列(Car、Reg_Price)を持つDataFrame1を作成しましょう。dataFrame1 = pd.DataFrame( { Car: [BMW, Lexus, Audi, Mustang, Bentley, Jaguar], Reg_Pri