ReSharper 2024.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

バルクモードで「var」キーワードの使用の設定を強制する別のオプションは、コードのクリーンアップです。組み込みプロファイルフルクリーンアップまたは再フォーマットして構文スタイルを適用のいずれかを使用してコードクリーンアップ実行するか、以下で説明するように、特定のタスクのみを対象としたカスタムプロファイルを作成して実行できます。

カスタムコードクリーンアッププロファイルで「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' キーワードの使用設定を、他のすべてのフォーマットおよび構文スタイルの規則とともに、選択したコードブロック Alt+Enter に適用し、再フォーマットとクリーンアップ | 構文スタイルを再フォーマットして適用するを選択します。

変更をファイルに保存するたびに「var」キーワードの使用箇所の設定を適用して、編集が常にコードスタイルに準拠するようにすることができます。

変更の保存時に「var」キーワードの使用の設定を自動的に適用する

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

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

  3. カスタムコードクリーンアッププロファイルを選択し、デフォルトに設定をクリックします(デフォルトプロファイルはサイレントクリーンアップにも使用されます)。

  4. コード編集 | コードのクリーンアップ | 一般オプションページに移動し、ファイルの保存時にクリーンアップを自動的に実行するを選択します。

    オプションで、ファイルマスクによって特定のファイルへの自動クリーンアップを制限できます。

    ファイルの変更された部分のみを選択して、変更によって影響を受けるコードにクリーンアップが適用され、ファイル内の残りのコードが変更されないようにすることもできます。

    ファイルの変更された部分のみをクリーンアップすることを選択した場合は、次のオプションを使用してこの動作を微調整できます。

    • 部分的なクリーンアップが不可能な場合は完全なクリーンアップを実行する — このオプションに応じて、ReSharper はファイル全体をクリーンアップするか、ファイルの変更された部分のみにクリーンアップを制限できない場合はファイルをスキップします。

    • 共有ファイルの保存時にクリーンアップを許可する — このオプションを使用して、共有プロジェクトのファイルなど、ソリューションに複数回含まれるファイルの部分的なクリーンアップを有効または無効にします。

  5. ダイアログで保存をクリックして変更を適用し、ReSharper に変更を保存する場所を選択させるか、保存先セレクターからこのレイヤーを選択して特定の設定レイヤーに変更を保存します。詳細については、「resharper 設定の管理と共有」を参照してください。

  6. 次回編集を終了してファイル (Ctrl+S) またはすべてのファイル (Ctrl+Shift+S) を保存すると、ReSharper は選択したプロファイルを使用して影響を受けるファイルをクリーンアップします。デフォルトのクリーンアッププロファイルが選択されていない場合、ReSharper はプロファイルの 1 つを選択するように求めます。

'var' キーワードを使用するための環境設定を構成する

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

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

  1. ReSharper オプション Alt+R, Oコード編集 | C# | 構文スタイルページに移動します。

  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. 変更したスタイル設定を共有設定レイヤーに保存する必要がある場合は、コードスタイルを設定するメニュー項目をクリックするか、選択時に Enter を押します。ReSharper により、ReSharper オプションのコード編集 | C# | 構文スタイルページが開きます。必要に応じて設定を変更し、保存先をクリックして、目的の設定レイヤーを選択します。

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

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

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

以下の表は、ReSharper オプション Alt+R, Oコード編集 | C# | 構文スタイルページの型の証拠には Roslyn(Visual Studio)ロジックを優先するチェックボックスの状態に応じて、'var' と宣言できる初期化子が明らかであると見なされるケースを示しています。

初期化式

サンプル

オフ

オン

オブジェクト作成式

new MyClass()

明らか

明らか

キャスト式

(MyClass) obj

明らか

明らか

as

obj 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

明らか

明らかではない

列挙型メンバー

KnownColor.Azure

明らか

明らかではない

シングルトンフィールド (宣言されている型の値を返す静的 / 定数フィールド)

int.MaxValue string.Empty

フィールド名にタイプ名または次の部分文字列のいずれかが含まれている場合に明らか: 「空」、「インスタンス」、「デフォルト」、「値」

明らかではない

異なる言語での適用性

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

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

関連ページ:

設計時にコードの問題を分析する

ReSharper は、エディターでコードファイルを開くとすぐに分析を開始し、最後まで編集を続けます。検出されたすべてのコードの問題は、重大度に従ってエディターでハイライトされます。問題のマップは、エディターウィンドウの右側のマーカーバーにも表示されます。ここでは、ファイルのステータスを即座に確認し、マークをクリックして特定のコードの問題に移動できます。デザインタイムインスペクションの機能:ReSharper によって実行されるデザインタイムコードインスペクションを説明するために、エディターに...

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

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

スコープを修正

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

コードインスペクション設定を構成する

設計時コードインスペクションを構成する:デフォルトでは、ReSharper は、サポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします。必要に応じて、無効にすることができます。設計時コードインスペクションが有効かどうかに関係なく、コードインスペクションは常に特定のスコープで実行できます。メインメニューからを選択するか、Alt+R O を押してから、左側のを選択します。設計時コードインスペクションを切り替えるには、コード分析を有効にするチェックボックスを使用し...

コードのクリーンアップ

ReSharper を使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1 つ以上のファイル、プロジェクト、ソリューション全体でコードスタイル違反を即座に排除できます。コードクリーンアッププロファイル:コードのクリーンアップには、ニーズに応じてさまざまな場合に適用できるさまざまな設定(プロファイル)があります。提供時の状態で使用可能な 3 つのデフォルトプロファイルがあります。コードのフォーマットのみを適用するビルトイン: コードの整形、コードのフォーマットとコードの...

ReSharper 設定の管理と共有

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