ReSharper 2024.1 ヘルプ

クイックフィックスの例

クイックフィックスは、さまざまな状況で利用できますが、リストアップするには大きすぎます。ReSharper は、サポートされているすべての言語で合計 1200 を超えるクイックフィックスを提供します。ここでは、状況の小さな選択を使用して使用する方法を示します:

型の不一致

式の型を式のコンテキストに適用できる型に暗黙的にキャストできない場合、ReSharper はこのエラーを検出し、エディターでハイライトします。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のリストからクイックフィックスを選択できます。

ReSharper: Type mismatch quick-fix

提案されているクイックフィックスを適用した場合の影響を下の表に示します。

クイックフィックス

効果

string にキャスト

ReSharper: Type mismatch quick-fix

string に安全にキャスト

ReSharper: Type mismatch quick-fix

o のタイプを string に変更

ReSharper: Type mismatch quick-fix

s のタイプを object に変更

ReSharper: Type mismatch quick-fix

ToString() を呼び出す

ReSharper: Type mismatch quick-fix

未定義の変数

ReSharper がコード内で未定義の変数を検出すると、エラーがハイライトされます。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のクイックフィックスのリストが表示されます。

ReSharper: Undefined variable quick-fix

提案されているクイックフィックスを適用した場合の影響を下の表に示します。

クイックフィックス

効果

ローカル変数 s を作成します

新しいローカル変数 s が作成され、目的の型を選択することができます。

包含メソッドにパラメーター s を作成します

新しいパラメーターがメソッドシグネチャーに追加されます。

ReSharper: Undefined variable quick-fix

その他を作成

対応するクラスのフィールドまたはプロパティを作成することを選択できるサブメニューを開きます。例: フィールドの作成を選択すると、現在のクラスに新しいプライベートフィールド s が作成されます。新しいフィールドの正しいタイプを選択するのに役立つ次の提案が表示されます。

ReSharper: Undefined variable quick-fix

すべての s を変更

すべて変更を選択すると、次の提案が表示されます。

ReSharper: Undefined variable quick-fix

新しい名前は一度だけ入力してください。ReSharper は未定義変数の他のすべての発生を変更します:

ReSharper: Undefined variable quick-fix

未定義のメソッド呼び出し

ReSharper がコード内で未定義のメソッドの呼び出しを検出すると、エラーがハイライトされます。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、ReSharper は次のクイックフィックスのリストを表示します。

ReSharper: Undefined method call quick-fix

クイックフィックスを適用すると、コードは次の表のように変更されます。

クイックフィックス

効果

メソッドの作成

このクイックフィックスでは、メソッドコールから派生したシグネチャーを使用して新しいメソッドを宣言し、トップダウンプログラミングを好む開発者に役立ちます。この例では、ReSharper は戻り値の型を正しく推測して次の宣言を作成します。

ReSharper: Undefined method call quick-fix

ReSharper はまた、新しいメソッドのパラメーターの適用可能な型と名前を提案します:

ReSharper: Undefined method call quick-fix

その他を作成

このサブメニューには、補助コードの作成を含むその他のクイックフィックスが含まれています。例:

包含メソッドでパラメーターを作成します

このクイックフィックスは、未解決のシンボルから現在のメソッドに新しいパラメーターを作成しますが、その基本メソッドまたは継承は更新しません。

メソッドを含むパラメーターを作成し、階層を更新します

このクイックフィックスは、未解決のシンボルから現在のメソッドに新しいパラメーターを作成し、メソッドが持つ可能性のある基本メンバーと継承にこのパラメーターを導入します。

すべて変更

未定義の変数に対応するクイックフィックスと同様に、このクイックフィックスを使用すると、シンボル someMethod のすべての出現をすばやく置き換えることができます。

忘れられたメソッドの戻り

メソッドが値を返すことが期待されているにもかかわらず、return ステートメントを指定するのを忘れた場合、ReSharper は問題のあるメソッドの終了括弧をハイライトしてそのことを警告します。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のクイックフィックスが表示されます。

ReSharper: Forgotten method return quick-fix

クイックフィックス

効果

return ステートメントの追加

クイックフィックスが適用された後、ReSharper は null を返す return ステートメントを追加します。

メソッドが void を返すようにする

クイックフィックスが適用された後、ReSharper はメソッドの初期戻り型を void に置き換えます。

Using ディレクティブがありません

ファイルに対応する using ディレクティブを書き忘れたために解決できないタイプ名がコードに含まれているときはいつでも、小さなポップアップがタイプをインポートすることを提案します。

ReSharper: Namespace import quick-fix

Alt+Enter を押すと、適切な using ディレクティブが挿入されます。一致する名前を持つタイプが複数ある場合は、使用するタイプを選択するよう求められます (詳細については、「インポートする名前空間」を参照してください)。

ポップアップが表示されたときに必要な名前空間をインポートしないことを選択した場合、または ReSharper オプション Alt+R, Oコード編集 | タイプインポートページでエディターで「不足している参照のインポート」ポップアップを表示するを無効にした場合は、キャレットをタイプに置き、Alt+Enter を押して対応するクイックフィックスを選択することで、いつでもタイプをインポートできます。

ReSharper: quick-fixes for missing namespace import

たとえば、ソリューションにシステムタイプに似たもの ( MyFramework.MyCollections.List など) があるが、実際には使用していない場合など、一部のタイプまたは名前空間を提案しないようにしたい場合があります。このような項目を提案から除外するには、ReSharper オプション Alt+R, Oコード編集 | タイプインポートページのインポートおよび補完から除外リストに追加します。

エントリの形式は、Fully.Qualified.NameFully.Qualified.Name.Prefix**Fully.Qualified.Name.Suffix です。ジェネリクス型は List`1 として指定されます。

不足している非同期修飾子

await 演算子を含むが非同期として定義されていないメソッドがある場合、ReSharper はそのような不一致を検出し、対応するクイックフィックスを使用してこの問題を修正します。

次の前で改ページ:

ReSharper: Missing async modifier quick-fix

クイックフィックスの適用:

ReSharper: Missing async modifier quick-fix

次の後で改ページ:

ReSharper: Missing async modifier quick-fix

ループを LINQ 式に変換する

C# 3.0 と LINQ を使用することで、開発者はその意図をコンパイラーに直接記述することで、データ集約型コードをより簡単に記述することができます。ReSharper は、LINQ 構文を使用して書き換え可能なコードを検出し、自動的に変換を実行します。

次の前で改ページ:

ReSharper: Converting a loop to a LINQ expression quick-fix

クイックフィックスの適用:

ReSharper: Converting a loop to a LINQ expression quick-fix

次の後で改ページ:

ReSharper: Converting a loop to a LINQ expression quick-fix

メソッドのパラメーターと戻り値で IEnumerable に移行する

ReSharper はコードベースをスキャンして、ArrayListArrayList などのより具体的なタイプの代わりに IEnumerable を安全に返し、受け入れることができるメソッドを検出します。

次の前で改ページ:

ReSharper: Migrating to IEnumerable in method parameters and returns

クイックフィックスの適用:

ReSharper: Migrating to IEnumerable in method parameters and returns

次の後で改ページ:

ReSharper: Migrating to IEnumerable in method parameters and returns

代入文をオブジェクトイニシャライザーに変換する

ReSharper は、代入文をオブジェクトイニシャライザーに変換するコンテキストアクションとクイックフィックスの両方を提供します。コンテキストアクションを使用すると、フィールドの割り当てを 1 つずつイニシャライザーに追加できますが、クイックフィックスではすべてを一度に追加できます。クイックフィックスの仕組みは次のとおりです。

次の前で改ページ:

ReSharper: Converting assignment statements to object initializers

クイックフィックスの適用:

ReSharper: Converting assignment statements to object initializers

次の後で改ページ:

ReSharper: Converting assignment statements to object initializers

静的メソッド呼び出しを拡張メソッド呼び出しに変換する

ReSharper は、従来の C# 静的メソッドとして拡張メソッドを呼び出すと、標準の拡張メソッド呼び出しの習慣にすばやく準拠できます。

次の前で改ページ:

ReSharper: Converting static method invocation to extension method call

クイックフィックスの適用:

ReSharper: Converting static method invocation to extension method call

次の後で改ページ:

ReSharper: Converting static method invocation to extension method call

匿名メソッドをラムダ式に変換する

ReSharper は、匿名メソッドをラムダ式に変換することを提案しています。逆の機能はコンテキストアクションとして提供されます。

次の前で改ページ:

ReSharper: Converting anonymous method to lambda expression

クイックフィックスの適用:

ReSharper: Converting anonymous method to lambda expression

次の後で改ページ:

ReSharper: Converting anonymous method to lambda expression

自動プロパティに変換する

ReSharper を使用すると、従来のプライベートフィールドベースのプロパティを C# 3.0 に実装された自動プロパティに簡単に変換できます。詳細については、自動プロパティを使用するを参照してください。

次の前で改ページ:

ReSharper: Converting to auto-property

クイックフィックスの適用:

ReSharper: Converting to auto-property

次の後で改ページ:

ReSharper: Converting to auto-property

型パラメーターを不変にする

型パラメーターの使用箇所がその分散に違反するとき、ReSharper はパラメーターを不変にすることを提案します:

次の前で改ページ:

ReSharper: Making type parameter invariant

クイックフィックスの適用:

ReSharper: Making type parameter invariant

次の後で改ページ:

ReSharper: Making type parameter invariant