クイックフィックスの例
クイックフィックスは、さまざまな状況で利用できますが、リストアップするには大きすぎます。ReSharper は、サポートされているすべての言語で合計 1200 を超えるクイックフィックスを提供します。ここでは、状況の小さな選択を使用して使用する方法を示します:
型の不一致
式の型を式のコンテキストに適用できる型に暗黙的にキャストできない場合、ReSharper はこのエラーを検出し、エディターでハイライトします。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のリストからクイックフィックスを選択できます。
提案されているクイックフィックスを適用した場合の影響を下の表に示します。
クイックフィックス | 効果 |
---|---|
| |
| |
| |
| |
|
未定義の変数
ReSharper がコード内で未定義の変数を検出すると、エラーがハイライトされます。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のクイックフィックスのリストが表示されます。
提案されているクイックフィックスを適用した場合の影響を下の表に示します。
クイックフィックス | 効果 |
---|---|
ローカル変数 | 新しいローカル変数 |
包含メソッドにパラメーター | 新しいパラメーターがメソッドシグネチャーに追加されます。 |
その他を作成 | 対応するクラスのフィールドまたはプロパティを作成することを選択できるサブメニューを開きます。例: フィールドの作成を選択すると、現在のクラスに新しいプライベートフィールド |
すべての | すべて変更を選択すると、次の提案が表示されます。 新しい名前は一度だけ入力してください。ReSharper は未定義変数の他のすべての発生を変更します: |
未定義のメソッド呼び出し
ReSharper がコード内で未定義のメソッドの呼び出しを検出すると、エラーがハイライトされます。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、ReSharper は次のクイックフィックスのリストを表示します。
クイックフィックスを適用すると、コードは次の表のように変更されます。
クイックフィックス | 効果 |
---|---|
メソッドの作成 | このクイックフィックスでは、メソッドコールから派生したシグネチャーを使用して新しいメソッドを宣言し、トップダウンプログラミングを好む開発者に役立ちます。この例では、ReSharper は戻り値の型を正しく推測して次の宣言を作成します。 ReSharper はまた、新しいメソッドのパラメーターの適用可能な型と名前を提案します: |
その他を作成 | このサブメニューには、補助コードの作成を含むその他のクイックフィックスが含まれています。例:
|
すべて変更 | 未定義の変数に対応するクイックフィックスと同様に、このクイックフィックスを使用すると、シンボル |
忘れられたメソッドの戻り
メソッドが値を返すことが期待されているにもかかわらず、return
ステートメントを指定するのを忘れた場合、ReSharper は問題のあるメソッドの終了括弧をハイライトしてそのことを警告します。ハイライトされたエラーにキャレットを置き、Alt+Enter を押すと、次のクイックフィックスが表示されます。
クイックフィックス | 効果 |
---|---|
return ステートメントの追加 | クイックフィックスが適用された後、ReSharper は |
メソッドが void を返すようにする | クイックフィックスが適用された後、ReSharper はメソッドの初期戻り型を |
Using ディレクティブがありません
ファイルに対応する using ディレクティブを書き忘れたために解決できないタイプ名がコードに含まれているときはいつでも、小さなポップアップがタイプをインポートすることを提案します。
Alt+Enter を押すと、適切な using ディレクティブが挿入されます。一致する名前を持つタイプが複数ある場合は、使用するタイプを選択するよう求められます (詳細については、「インポートする名前空間」を参照してください)。
ポップアップが表示されたときに必要な名前空間をインポートしないことを選択した場合、または ReSharper オプション Alt+R, O の ページでエディターで「不足している参照のインポート」ポップアップを表示するを無効にした場合は、キャレットをタイプに置き、Alt+Enter を押して対応するクイックフィックスを選択することで、いつでもタイプをインポートできます。
たとえば、ソリューションにシステムタイプに似たもの ( MyFramework.MyCollections.List
など) があるが、実際には使用していない場合など、一部のタイプまたは名前空間を提案しないようにしたい場合があります。このような項目を提案から除外するには、ReSharper オプション Alt+R, O の ページのインポートおよび補完から除外リストに追加します。
エントリの形式は、Fully.Qualified.Name
、Fully.Qualified.Name.Prefix*
、*Fully.Qualified.Name.Suffix
です。ジェネリクス型は List`1
として指定されます。
不足している非同期修飾子
await
演算子を含むが非同期として定義されていないメソッドがある場合、ReSharper はそのような不一致を検出し、対応するクイックフィックスを使用してこの問題を修正します。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
ループを LINQ 式に変換する
C# 3.0 と LINQ を使用することで、開発者はその意図をコンパイラーに直接記述することで、データ集約型コードをより簡単に記述することができます。ReSharper は、LINQ 構文を使用して書き換え可能なコードを検出し、自動的に変換を実行します。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
メソッドのパラメーターと戻り値で IEnumerable に移行する
ReSharper はコードベースをスキャンして、Array
、List
、ArrayList
などのより具体的なタイプの代わりに IEnumerable
を安全に返し、受け入れることができるメソッドを検出します。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
代入文をオブジェクトイニシャライザーに変換する
ReSharper は、代入文をオブジェクトイニシャライザーに変換するコンテキストアクションとクイックフィックスの両方を提供します。コンテキストアクションを使用すると、フィールドの割り当てを 1 つずつイニシャライザーに追加できますが、クイックフィックスではすべてを一度に追加できます。クイックフィックスの仕組みは次のとおりです。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
|
静的メソッド呼び出しを拡張メソッド呼び出しに変換する
ReSharper は、従来の C# 静的メソッドとして拡張メソッドを呼び出すと、標準の拡張メソッド呼び出しの習慣にすばやく準拠できます。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
匿名メソッドをラムダ式に変換する
ReSharper は、匿名メソッドをラムダ式に変換することを提案しています。逆の機能はコンテキストアクションとして提供されます。
次の前で改ページ: |
|
クイックフィックスの適用: | |
次の後で改ページ: |
|
自動プロパティに変換する
ReSharper を使用すると、従来のプライベートフィールドベースのプロパティを C# 3.0 に実装された自動プロパティに簡単に変換できます。詳細については、自動プロパティを使用するを参照してください。
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
|
型パラメーターを不変にする
型パラメーターの使用箇所がその分散に違反するとき、ReSharper はパラメーターを不変にすることを提案します:
次の前で改ページ: | |
クイックフィックスの適用: | |
次の後で改ページ: |
関連ページ:
欠落している名前空間をインポートする
ファイルに名前空間がインポートされていない型を使用する場合、ReSharper はこれらの型を見つけて不足している名前空間インポートディレクティブを追加できます。たとえば、ファイルにコードのブロックを貼り付けた後など、未解決の型にいくつかの不足している名前空間がある場合、ReSharper はこれらすべての名前空間を 1 回の操作でインポートできます。ReSharper は、現在のプロジェクトで参照されているアセンブリ、ソリューション内の他のプロジェクトで参照されているアセンブリ、推移的に参照さ...
自動プロパティを使用する
自動実装されたプロパティ(自動プロパティとも呼ばれます)を使用すると、追加のロジックを持たない型プロパティをより簡単な方法で宣言できます。デフォルトでは、ReSharper は可能な場合は自動プロパティの使用を推奨していますが、この動作は構成可能です。デフォルトでは、ReSharper は自動プロパティに変換される可能性があるほとんどのプロパティをハイライトし、対応するクイックフィックスまたはスコープ内の修正を提案します。ReSharper にこれを提案させたくない場合は、それを検出するコードイ...