ReSharper 2020.3 ヘルプ

コードの構文スタイル: 暗黙的 / 明示的な型指定 ('var' キーワード)

C# 3.0 で導入された暗黙的に型指定されたローカル変数(英語)var キーワードとも呼ばれます)(英語)を使用すると、多くのシナリオで読みやすさが向上するため、非常に人気があります。デフォルトでは、ReSharper は var キーワードの使用も推奨していますが、その使用箇所の設定柔軟に構成できます。たとえば、特定の場合やあらゆる場所で明示的な型を使用することを選択でき、ReSharper は設定を適用できます。

C# 7.0 から、タプルを分解(英語)するときにローカル変数を宣言できます。このような宣言で var を使用する場合は、結合表記または区切り表記を使用するようにスタイルを追加で構成できます。例: var (x, y) = GetTuple(); または (var x, var y) = GetTuple();

もう 1 つの C# 7.0 機能は破棄です(英語)。これにより、var を使用して、_ という名前のスコープ内の変数との競合がないことを確認することもできます。ReSharper を使用すると、必要に応じて破棄して var を常に使用するようにスタイルを構成できます。

「var」キーワードを使用する設定を強制する

ReSharper はあなたの好みに合っているかどうかすべてのローカル変数をチェックします。もしそれらが遵守していなければ、ReSharper はそのような宣言を強調し、対応するクイックフィックスまたはスコープの修正を提案します。

デフォルトでは、ReSharper の設定では、'var' キーワードが優先されます:

'Var' usage quick-fix
設定を変更した場合、ReSharper は明示的な型を使用できます:
'Var' usage quick-fix

Another option to enforce preferences of 'var' keyword usage in a bulk mode is code cleanup. You can either run code cleanup withone of the built-in profiles フルクリーンアップ or 再フォーマットして構文スタイルを適用 , or create and run カスタムプロファイル solely targeted at your specific task as described below.

カスタムコードクリーンアッププロファイルで「var」キーワードを使用する設定を適用する

  1. メインメニューから ReSharper | オプションを選択するか、Alt+R O を押します。

  2. クリーンアッププロファイル設定ページに移動します: コード編集 | コードのクリーンアップ | プロファイル

  3. 新しいカスタムクリーンアッププロファイルを作成するセクションの説明に従って、新しいプロファイルを作成します。新しいプロファイルの選択したプロファイル設定セクションで、'var' キーワードの使用設定を強制するチェックボックスをオンにします。必要に応じて、このプロファイルで他のコードクリーンアップタスクを有効にすることができます。

  4. オプションダイアログで保存をクリックして変更を適用し、ReSharper に保存場所を選択させるか、次へ保存リストを使用して変更を特定の設定レイヤーに保存します。詳細については、ReSharper 設定の管理と共有を参照してください。

  5. 設定を適用する範囲を選択します。

    • ファイルの任意の場所にキャレットを設定して、ファイルの設定を強制します。

    • ソリューションエクスプローラー内の 1 つまたは複数の項目を選択して、これらのノードおよびその子項目にあるファイルに設定を適用します。

  6. 以下のいずれか 1 つを実行します:

    • Control+Alt+F を押すか、メインメニューから ReSharper | 編集 | コードのクリーンアップ... を選択してください。

    • テキストエディターの任意の場所を右クリックするか、選択項目を右クリックし、コンテキストメニューでコードのクリーンアップを選択します。

  7. 開いているコードのクリーンアップダイアログで、新しく作成したプロファイルを選択します。

  8. 実行をクリックします。ReSharper は、選択した範囲であなたの設定を強制します。

コードのクリーンアップダイアログを開いてプロファイルを選択せずに「var」キーワードの使用設定を適用する場合は、作成したプロファイルをサイレントクリーンアップにバインドし、Control+Shift+Alt+F を押して実行できます。環境設定の適用と他のコードスタイルタスクを組み合わせたカスタムクリーンアッププロファイルを作成することもできます。

「var」キーワードを使用する設定を構成する

'var' キーワードの使用設定は、レイヤーベースの設定の仕組みを使って保存されます。とりわけ、このメカニズムにより、さまざまなソリューションのさまざまな設定を維持したり、これらの設定を VCS に保持したり、チームメンバーと自動的に共有することができます。

オプションで「var」キーワードを使用する設定を構成するダイアログ

  1. Go to the コード編集 | C# | 構文スタイル page of ReSharper options( Alt+R, O ).

  2. 宣言における 'var' の使用箇所カテゴリの設定を、コーディングのプラクティス / 標準に従って変更します。

    タイプごとに 'var' または明示的なタイプを使用する異なる設定を設定できます。

    • ビルトインタイプの場合C# ビルトインタイプ(英語)に適用されます。

    • 単純型の場合 — ジェネリックパラメーターのない型に適用されます。

    • 他の場所 — ジェネリック型と脱構築宣言に適用されます。

    これらの設定ごとに、「var」、明示的なタイプ、または明らかなときに 'var' の使用を選択できます。

  3. 前の手順で明確な場合は 'var' を使用するを選択した場合は、Visual Studio ロジックを適用して、どのケースを明白と見なすかを決定できます。

    ReSharper ロジックと Visual Studio ロジックの違いについては、明確な場合は 'var' を使用する: 明らかと考えられるものは何ですか? を参照してください。

  4. デフォルトでは、ReSharper は、var (x, y) = GetTuple(); などの分解宣言(英語)で複数の var の結合表記を提案します。展開された変数の宣言を別にすることを選択して、(var x, var y) = GetTuple(); などの個別の表記を選択できます。

  5. デフォルトでは、ReSharper は、破棄(英語)にスタンドアロン _ を使用することを提案します(例: (_, _) = (0, 1);)。破棄には 'var' キーワードを使用するを選択して、必要に応じて破棄を伴う var を常に使用することで、_ という名前のスコープ内の変数との競合がないことを確認できます。

  6. 右側の列の通知するセレクターを使用して、設定とは異なるコードインスペクション検出コードの重大度レベルを設定できます。

  7. オプションダイアログで保存をクリックして変更を適用し、ReSharper に保存場所を選択させるか、次へ保存リストを使用して変更を特定の設定レイヤーに保存します。詳細については、ReSharper 設定の管理と共有を参照してください。

また、エディターで 'var' キーワードを使用することの好みを変更することもできます。該当する問題がハイライトされます:

エディターから「var」キーワードを使用する設定を変更する

  1. ReSharper のインスペクションによってハイライトされたコードの問題にキャレットを設定します。

  2. Alt+Enter を押すか、キャレットの左側にあるアクションインジケーターをクリックして、アクションリストを開きます。

  3. アクションリストで、インスペクション " 優先「var」スタイルを使用 " | コードスタイルを設定するに移動して、希望の設定を選択します。

    Changing code style preference for 'var' keyword

  4. 変更は、スマートセーブロジックを使用して保存されます。

  5. If you need to save the modified style preference in a shared settings layer, click the コードスタイルを設定する menu item or press Enter when it is selected. ReSharper will open the コード編集 | C# | 構文スタイル page of ReSharper options( Alt+R, O ) where you can modify your preference as needed, click 次へ保存 and then choose the desired settings layer.

明確な場合は 'var' を使用する: 明らかと考えられるものは何ですか?

「var」キーワードと明示的なタイプを使用する設定を構成する場合、明確な場合は 'var' を使用するを選択できます。このオプションは自明のように見えますが、場合によっては「明らか」と見なされるものとそうではないものが不明な場合があります。

それとは別に、両方の製品が「var」キーワードまたは明示的な型の使用を提案する場合、ReSharper と Visual Studio によって明白(明白)と見なされるものの間にはいくつかの違いがあります。

The table below shows in which cases initializers that could be declared 'var' are considered evident depending on the state of the 型の証拠には Roslyn(Visual Studio)ロジックを優先する checkbox on the コード編集 | C# | 構文スタイル page of ReSharper options( Alt+R, O ).

初期化式 オフ オン
オブジェクト作成式 new MyClass() 明らか 明らか
キャスト式 (MyClass) obj 明らか 明らか
asobj as MyClass 明らか 明らか
リテラル式 "some string literal"
123
true
明らか 明らか
デフォルトの式 default(MyClass) 明らか 明らか
タプル式 (1, 2, 3) すべてのコンポーネント式が明らかな場合に明らか
明示的な配列作成式 new int[] { 1, 2, 3 }
new MyClass[5]
明らか 明らか
暗黙的な配列作成式 new [] { 1, 2, 3}
new [,] { {1, 2, 3}, {1, 2, 3}, {1, 2, 3} }
すべての要素初期化子(最大 42)が明らかな場合に明らか 明らかではない
非ジェネリックファクトリ(作成)メソッド (ある型で宣言され、同じ型の値を返す静的メソッド)MyClass.Build(someArgs) // returns MyClass メソッド名に親タイプ名または次の部分文字列のいずれかが含まれている場合に明らか: 「作成」、「ビルド」、「構築」、「作成」、「生成」、「生成」、「新規」、「インスタンス」 明らか
一般的なファクトリ(作成)メソッド (ジェネリック型を返し、戻り型と同じ名前のクラスで宣言された静的メソッド)Tuple.Create(1, 2, 3) すべてのメソッド呼び出し引数が明白であり、メソッド名に次の部分文字列の 1 つまたはクラス名が含まれている場合に明らか: 「作成」、「ビルド」、「構築」、「作成」、「生成」、「生成」、「新規」、「インスタンス」 明らか
変換方法 (「To」に戻り型の名前を加えた名前のメソッド)obj.ToString() enumeration.ToList() 戻り値の型がジェネリックでない場合に明らか 明らか
型引数の値を返す明示的な型引数を持つジェネリックメソッド obj.GetValue<MyClass>() // returns MyClass 明らか 明らかではない
Enum メンバー KnownColor.Azure 明らか 明らかではない
シングルトンフィールド (宣言されている型の値を返す静的 / 定数フィールド)int.MaxValue string.Empty フィールド名にタイプ名または次の部分文字列のいずれかが含まれている場合に明らか: 「空」、「インスタンス」、「デフォルト」、「値」 明らかではない

異なる言語での適用性

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

C# の機能の使用方法については、こちらの説明と例を参照してください。他言語の詳細については、言語による ReSharper の対応するトピックを参照してください。

関連ページ:

設計時にコードの問題を検出する

ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。また、JSLint、ESLint、TSLint から Javascript / Typescript コードの検証と修正をエディターで使用すること...

コードの問題のクイックフィックス

ReSharper を使用すると、設計時に検出されたほとんどのコード問題を即座に修復できます。ハイライトされたコードの問題でを押して、問題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスを適用する:クイックフィックスは、ハイライトされたコードの問題の左側にアクションインジケーターとして視覚的に表示されます。これらのインジケーターは、コードの問題でキャレットを設定すると表示されます。次の指標は、迅速な修正を意味します。 — 重大度エ...

スコープの修正

ほとんどのクイックフィックスは、キャレットで現在の問題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、またはソリューション全体など、より大きな範囲で問題を自動的に見つけて修正できるものもあります。「スコープ内で修正」と同様に、一部のコンテキストアクションはより広いスコープで適用できます。範囲内の修正を適用する:このような修正は、アクションリストの横に表示される小さな矢印で識別...

コードインスペクション設定の構成

コードアノテーションを使用して、ReSharper がコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押し...

ReSharper 設定の管理と共有

ReSharper は、階層化された設定のメカニズムを使用して環境設定を保存するため、次の利点があります。さまざまなソリューションで異なる設定を行うことができます。環境設定のさまざまなサブセットを別の場所に保存し、特定のソリューションで作業するときに環境設定を組み合わせることができます。例: 記号のアイコンとチーム設定のコード形式を個人設定で保存し、これらの設定を自動的に組み合わせることができます。設定の特定のサブセットを VCS に保持することにより、チーム内の設定を同期できます。ReShar...

コードのクリーンアップダイアログ

コードのクリーンアップダイアログでは、利用可能なコードクリーンアッププロファイルを使用して、選択したスコープ内のコードをクリーンアップしたり、カスタムクリーンアッププロファイルを作成および編集したりできます。このダイアログでクリーンアッププロファイルを作成または変更する場合、変更はスマート保存ロジックを使用して保存されることに注意してください。変更を共有設定レイヤーに保存する必要がある場合は、ReSharper オプションのページで変更を行い、次へ保存をクリックしてから、目的の設定レイヤーを選択...