ReSharper 2026.1 Help

メソッドを非静的にするリファクタリング

このリファクタリングにより、静的メソッドを元の型または別の型のインスタンスメソッドに変換できます。 新しいインスタンスメソッドのターゲット型は、メソッドにパラメーターとして渡される型のいずれかから選択できます。 このメソッドの使用方法、実装方法、オーバーライドはすべて自動的に更新されます。

このリファクタリングは、現在のソリューションで定義されている型のパラメーターを少なくとも 1 つ持つ静的メソッドにのみ適用できます。

以下の例では、このリファクタリングを使用して、 Info クラスの静的メソッド Merge を同じ型のインスタンスメソッドに変換します。

class Info { string Id { get; set; } string Name { get; set; } static Info Merge(Info i1, Info i2) { return new Info { Id = i1.Id + i2.Id, Name = i1.Name + i2.Name }; } void Test() { var i1 = new Info() { Id = "123", Name = "AA" }; var i2 = new Info() { Id = "456", Name = "BB" }; var merged = Info.Merge(i1, i2); } }
class Info { string Id { get; set; } string Name { get; set; } Info Merge(Info i2) { return new Info { Id = Id + i2.Id, Name = Name + i2.Name }; } void Test() { var i1 = new Info() { Id = "123", Name = "AA" }; var i2 = new Info() { Id = "456", Name = "BB" }; var merged = i1.Merge(i2); } }

次の例では、 Info オブジェクトで動作する静的メソッド Merge がクラス Service で定義されています。 リファクタリングを使用して、 Merge を論理的に属するクラス Info のインスタンスメソッドにします。

class Service { public static Info Merge(Info i1, Info i2) { return new Info { Id = i1.Id + i2.Id, Name = i1.Name + i2.Name }; } } class Info { public string Id { get; set; } public string Name { get; set; } void Test() { var info1 = new Info() { Id = "123", Name = "AA" }; var info2 = new Info() { Id = "456", Name = "BB" }; var merged = Service.Merge(info1, info2); } }
class Service { } class Info { public string Id { get; set; } public string Name { get; set; } void Test() { var info1 = new Info() { Id = "123", Name = "AA" }; var info2 = new Info() { Id = "456", Name = "BB" }; var merged = info1.Merge(info2); } public Info Merge(Info i2) { return new Info { Id = Id + i2.Id, Name = Name + i2.Name }; } }

静的メソッドをインスタンスメソッドに変換する

  1. キャレットをエディターの static メソッドの宣言または使用箇所に置くか、 ファイル構造ウィンドウウィンドウで選択します。

  2. 次のいずれかを実行します。

    • Control+Shift+R を押し、を メソッドを非静的にする を選択します。

    • 右クリックして、コンテキストメニューから リファクタリング | メソッドを非静的にする を選択します。

    • メインメニューから ReSharper | リファクタリング | メソッドを非 static にする… を選択します。

    メソッドを非静的にする ダイアログが開きます。

  3. リストからパラメーターを選択します。 このメソッドは、パラメーター型のインスタンスメソッドに変換されます。

  4. リファクタリングを適用するには、 次へ をクリックします。

  5. 競合するものが見つからない場合、ReSharper はすぐにリファクタリングを実行します。 それ以外の場合は、 競合を解決するように求められます。

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 日