ReSharper 2026.1 Help

関係メンバーを生成する

ReSharperは、選択したフィールドやプロパティを使って、リレーショナル演算子や関連するインターフェースの実装を自動でオーバーロードするのに役立ちます。 デフォルトでは、ReSharper は IComparable<T> の実装を生成し、オプションで演算子 >< および IComparable の実装も生成します。

以下の例では、このコマンドを使用して、 Person クラスのオブジェクトを比較するときに int _birthYear および string _name フィールドを考慮に入れた関係メンバーを生成します。

生成前

生成後

class Person { private int _birthYear; private string _name; }
class Person : IComparable<Person>, IComparable { private int _birthYear; private string _name; public int CompareTo(Person other) { if (ReferenceEquals(this, other)) return 0; if (ReferenceEquals(null, other)) return 1; var birthYearComparison = _birthYear.CompareTo(other._birthYear); if (birthYearComparison != 0) return birthYearComparison; return string.Compare(_name, other._name, StringComparison.Ordinal); } // Optionally: Implementation of IComparable and relational operators public int CompareTo(object obj) { if (ReferenceEquals(null, obj)) return 1; if (ReferenceEquals(this, obj)) return 0; if (!(obj is Person)) throw new ArgumentException($"Object must be of type {nameof(Person)}"); return CompareTo((Person) obj); } public static bool operator <(Person left, Person right) { return Comparer<Person>.Default.Compare(left, right) < 0; } public static bool operator >(Person left, Person right) { return Comparer<Person>.Default.Compare(left, right) > 0; } public static bool operator <=(Person left, Person right) { return Comparer<Person>.Default.Compare(left, right) <= 0; } public static bool operator >=(Person left, Person right) { return Comparer<Person>.Default.Compare(left, right) >= 0; } }

リレーショナルメンバーを生成する

  1. エディターで、型名または型内のリレーショナルメンバーを挿入する行にキャレットを置きます。 キャレットが型名上にある場合、生成されたコードは型宣言の先頭に追加されます。

  2. Alt+Insert を押すか、メインメニューから ReSharper | 編集|コードの生成… を選択します。 あるいは、 Control+Shift+A を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。

  3. 生成する ポップアップで、 関係メンバー を選択します。

  4. 表示される 生成する ダイアログに、プロパティとフィールドの一覧が表示されます。 型比較に使用したいメンバーを選択してください。

    ReSharper を使用した関係メンバーの生成

    型にフィールドやプロパティが存在しない、またはそれらを選択しない場合、ReSharper は設定に応じて、新しい NotImplementedException() をスローするか、デフォルト値を返すか、生成したメソッドの本体にコンパイルできないコードを記述します。 ReSharper オプションの コード編集 | メンバーの生成 ページで設定できます。

    必要に応じて、ダイアログで次のコントロールを使用します。

    • フィールドは null 可能 — 型に nullable なフィールドまたはプロパティがある場合に表示されます。 デフォルトでこのチェックボックスが選択されている場合、ReSharper は選択したフィールドの null チェックを生成します。 null チェックが不要な場合は、このチェックボックスをオフにできます。

    • 文字列比較 — 型に文字列フィールドがある場合に表示されます。 ReSharper は選択された文字列に対して string.Compare(string, string, StringComparison) を生成し、セレクターで StringComparison 引数にどの値を生成するか選択できます。

    • CompareTo はすでに存在するCompareTo() の実装がすでに存在する場合に表示され、次のいずれかを選択できます。

      • メソッドがすでに存在する場合は置換します。

      • 新しく生成されたメソッドを既存のメソッドと並べて置きます。

      • 新しいメソッドの生成をすべてスキップします。

    • IComparable インターフェースを実装する― このチェックボックスをオンにすると、 IComparable<T> に加えて IComparable インターフェースの実装も生成されます。つまり、 CompareTo(T) に加えて CompareTo(object) メソッドも生成されます。

  5. 完了 をクリックしてウィザードを完了します。

    オプション をクリックすることで、ReSharper オプションの コード編集 | メンバーの生成 ページで一般的なコード生成の環境設定を確認または変更することもできます。

この機能は、次の言語とテクノロジーで サポートされています。

言語: C#

言語: VB.NET

言語: C++

言語: ASP.NET

言語: Razor

言語: XAML

言語: Resx

言語: スクリプトの作成

言語: SQL

この機能は C# で利用可能です

この機能は Visual Basic で利用可能です

この機能は C++ で利用可能です

この機能は ASP.NET では使用できません

この機能は Razor では使用できません

機能は XAML では使用できません

機能はリソースファイルでは使用できません

機能はビルドスクリプトファイルでは使用できません

機能は SQL/NoSQL ファイルおよびインジェクションでは利用できません

ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。

2026 年 6 月 12 日