すばやく型を作成する
このチュートリアルでは、標準のメソッドセットを使用して型を作成します。
C# で型やエンティティを作成するのは、かなり難しいことがあります。 そもそも、 Equals() の正しい実装を手で覚えている人がどれだけいるでしょうか? 幸い、ReSharper がサポートしてくれます。 それでは見てみましょう。
まず、 Person という名前の最もシンプルなエンティティクラスを定義します。このクラスは人の名前と年齢を保存します:
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
1。 コンストラクターを生成
現状では、このクラスの初期化は、コンストラクターがないため苦痛です。 コードの生成コマンド Alt+Insert を使用して作成してみましょう。 まず、クラス全体で起動して コンストラクター を選択します。

ここで、どのプロパティを初期化するかを確認するダイアログが表示されます。 それらのすべてを選んでみましょう。

完了 を押すと、クラスは生成されたコンストラクターで終了します:
public Person(string name, int age)
{
Name = name;
Age = age;
}
2。 等価メンバーを生成する
例えば、 Person のインスタンスを HashSet<Person> コレクションに保持したいとします。 そのためには、 Equals() と GetHashCode() を実装する必要があります。 再び、ReSharper がこれを手助けしてくれます。もう一度 生成する コマンドを実行し、 等価メンバー を選びます。 次のダイアログが表示されます:

等価演算子(== と != )と IEquatable<T> の実装を生成するオプションを選択すると、ReSharper は次のコードを生成します。
public bool Equals(Person other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return string.Equals(Name, other.Name) && Age == other.Age;
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((Person) obj);
}
public override int GetHashCode()
{
unchecked
{
return ((Name != null ? Name.GetHashCode() : 0)*397) ^ Age;
}
}
public static bool operator ==(Person left, Person right)
{
return Equals(left, right);
}
public static bool operator !=(Person left, Person right)
{
return !Equals(left, right);
}
また、ロギングとデバッグのために ToString() メソッドの実装を取得したいと考えています。 もう一度、 生成する メニューがあります。 メニューから 書式設定メンバー を選択し、 ToString() に表示するプロパティを選択すると、出来上がり -ReSharper は次の実装を生成します。
public override string ToString()
{
return string.Format("Name: {0}, Age: {1}", Name, Age)
}
2026 年 6 月 12 日