コードの構文スタイル: 暗黙的 / 明示的な型指定 ('var' キーワード)
暗黙的に型指定されたローカル変数 (var キーワードとも呼ばれる)は、C# 3.0 で導入され、多くの場面で可読性が向上するため広く利用されています。 デフォルトでは、ReSharper も var キーワードの使用を推奨しますが、その使用の環境設定は 柔軟に設定できます 。たとえば、特定のケースやすべての場合に明示的な型を使用することも選択でき、ReSharper が環境設定に従うようサポートします。
C# 7.0 以降、 タプルの分解時にローカル変数を宣言できます。 このような宣言で var を使用したい場合は、結合または分離の表記法スタイルを追加で設定できます。たとえば、 var (x, y) = GetTuple(); や (var x, var y) = GetTuple(); です。
C# 7.0 の別の機能である ディスカードは、スコープ内に _ という名前の変数が存在する場合に競合しないように、 var を使用することもできます。 ReSharper では、ディスカードが適切な場合に常に var を使用するスタイルを設定できます。
「var」キーワードを使用する設定を強制する
ReSharper はすべてのローカル変数が 環境設定に準拠しているかをチェックし、準拠していない場合、そのような宣言をReSharper が ハイライトし、対応する クイックフィックスまたは スコープ内の修正を提案します。
デフォルトでは、ReSharper の環境設定では「var」キーワードが優先されます:

環境設定を変更すると、ReSharper は明示的な型の使用をサポートします:

「var」キーワード使用の環境設定をバルクモードで強制する別のオプションは、 コードのクリーンアップです。 組み込みプロファイル フルクリーンアップまたは 再フォーマットして構文スタイルを適用のいずれかを使用して コードクリーンアップを実行するか、後述するように、特定のタスクのみを対象とした カスタムプロファイルを作成して実行することができます。
カスタムコードクリーンアッププロファイルで「var」キーワードを使用する設定を適用する
メインメニューから を選択するか、 Alt+R O を押します。
クリーンアッププロファイル設定ページに移動します: 。
新しいカスタムクリーンアッププロファイルを作成する セクションの説明に従って、新しいプロファイルを作成します。 右側のプロファイル設定で、 ノードを展開し、 'var' スタイルを適用する チェックボックスをオンにします。
オプション ダイアログで 保存 をクリックして変更内容を適用し、ReSharper に保存場所を任せるか、 保存先 セレクターから特定のレイヤーを選択して変更を保存します。 詳細については、 resharper 設定の管理と共有 をご参照ください。
設定を適用する範囲を選択します。
ファイル内の任意の場所にキャレットを配置して、ファイルに設定を適用します。
ソリューションエクスプローラー 内の 1 つまたは複数の項目を選択して、これらのノードおよびその子項目にあるファイルに設定を適用します。
次のいずれかを実行します。
Control+Alt+F を押すか、メインメニューから を選択してください。
テキストエディターの任意の場所を右クリックするか、選択項目を右クリックし、コンテキストメニューで コードのクリーンアップ を選択します。
表示された コードのクリーンアップ ダイアログで、新しく作成したプロファイルを選択します。
実行 をクリックします。 ReSharper は、選択したスコープで環境設定を適用します。
コードのクリーンアップ ダイアログを開かずに「var」キーワードの使用環境設定を強制したい場合は、作成したプロファイルを サイレントクリーンアップにバインドし、 Control+Shift+Alt+F を押して実行できます。 設定の適用と他のコードスタイルタスクを組み合わせた カスタムクリーンアッププロファイルを作成することもできます。
「var」キーワードの使用環境設定を、他のすべての フォーマットおよび 構文スタイルルールと一緒に選択したコードブロックに適用するには、 Alt+Enter を押して を選択します。
変更をファイルに保存するたびに「var」キーワードの使用箇所の設定を適用して、編集が常にコードスタイルに準拠するようにすることができます。
変更の保存時に「var」キーワードの使用の設定を自動的に適用する
メインメニューから を選択するか、 Alt+R O を押します。
クリーンアッププロファイル設定ページに移動します: 。
カスタムコードのクリーンアッププロファイルを選択し、 デフォルトに設定する をクリックします(デフォルトプロファイルは サイレントクリーンアップにも使用されます)。
オプションページに移動し、 ファイル保存時にクリーンアップを自動的に実行する を選択します。
オプションで、ファイルマスクによって特定のファイルへの自動クリーンアップを制限できます。
ファイルの変更された部分のみ を選択して、変更によって影響を受けるコードにクリーンアップが適用され、ファイル内の残りのコードが変更されないようにすることもできます。
ファイルの変更された部分のみをクリーンアップすることを選択した場合は、次のオプションを使用してこの動作を微調整できます。
部分的なクリーンアップが不可能な場合は完全なクリーンアップを実行する — このオプションに応じて、ReSharper はファイル全体をクリーンアップするか、ファイルの変更部分のみのクリーンアップができない場合は対象ファイルをスキップします。
共有ファイル保存時のクリーンアップを許可する — このオプションを使用して、共有プロジェクトのファイルなど、ソリューションに複数回含まれるファイルの部分的なクリーンアップを有効または無効にします。
ダイアログで 保存 をクリックして変更を適用し、ReSharper に保存場所を任せるか、 保存先 セレクターから特定の設定レイヤーを選択して変更を保存します。 詳細については、 resharper 設定の管理と共有 をご参照ください。
次回編集を終了してファイル( Ctrl+S )またはすべてのファイル( Ctrl+Shift+S )を保存すると、ReSharper は選択したプロファイルで対象ファイルをクリーンアップします。 デフォルトのクリーンアッププロファイルが選択されていない場合、ReSharper はプロファイルのいずれかを選択するよう促します。
'var' キーワードを使用するための環境設定を構成する
'var' キーワードの使用設定は、 レイヤーベースの設定の仕組みを使って保存されます。 このメカニズムにより、さまざまなソリューションに対して異なる設定を維持したり、これらの設定をバージョン管理システム (VCS) で管理したり、チームメンバーと自動的に共有したりすることが可能になります。
オプションで「var」キーワードを使用する設定を構成するダイアログ
ReSharper オプション Alt+R、O の ページに移動します。
宣言における 'var' の使用箇所 カテゴリの設定を、コーディングのプラクティス / 標準に従って変更します。
タイプごとに 'var' または明示的なタイプを使用する異なる設定を設定できます。
組み込み型の場合 — C# ビルトインタイプに適用されます。
単純型の場合 — ジェネリクスパラメーターのない型に適用されます。
他の場所 — ジェネリクス型と脱構築宣言に適用されます。
これらの設定ごとに、「var」、明示的なタイプ、 明らかなときに 'var' の使用を選択できます。
前の手順で 明確な場合は 'var' を使用する を選択した場合は、Visual Studio ロジックを適用して、どのケースを明白と見なすかを決定できます。
ReSharper と Visual Studio のロジックの違いについては、 明確な場合は 'var' を使用する: 明らかと考えられるものは何ですか? をご参照ください。
デフォルトでは、ReSharper は、 分解宣言で複数の
varに対して結合表記法を提案します。例えばvar (x, y) = GetTuple();です。 分解した変数は個別に宣言することを推奨します。 とを選択して、(var x, var y) = GetTuple();などの個別の表記を選択できます。デフォルトでは、ReSharper は 破棄用に単独の
_の使用を提案します。例えば(_, _) = (0, 1);です。 破棄には 'var' キーワードを使用する を選択して、必要に応じて破棄を伴うvarを常に使用することで、_という名前のスコープ内の変数との競合がないことを確認できます。右側の列の 通知する セレクターを使って、環境設定と異なるコードを検出する 重要度レベルや コードインスペクションを設定できます。
オプション ダイアログで 保存 をクリックして変更内容を適用し、ReSharper に保存場所を任せるか、 保存先 セレクターから特定のレイヤーを選択して変更を保存します。 詳細については、 resharper 設定の管理と共有 をご参照ください。
エディター内で該当箇所がハイライトされている場合、その場で「var」キーワード使用の環境設定も変更できます:
エディターから「var」キーワードを使用する設定を変更する
ReSharper のインスペクションでハイライトされたコードの問題にキャレットを合わせます。
Alt+Enter を押すか、キャレットの左側にある アクションインジケーターをクリックして アクションリストを開きます。
アクションリストで インスペクション「優先される 'var' スタイルを使用してください」 | コードスタイルを設定する に移動し、希望の環境設定を選択します:

変更は、 スマートセーブロジックを使用して保存されます。
変更したスタイル環境設定を 共有設定レイヤーに保存する場合は、 コードスタイルを設定する メニュー項目をクリックするか、選択した状態で Enter を押してください。 ReSharper は ReSharper オプション の ページを開くので、必要に応じて環境設定を修正し、 保存先 をクリックして希望の設定レイヤーを選択します。
構文スタイルの設定は、すべての言語では EditorConfig 、C++、JavaScript、TypeScript では Clang 形式で行うことができます。 これらの設定は、ソリューション階層の異なるレベルにある .editorconfig 、 .clang-format 、 _clang-format ファイルに保存できます。 これらのファイルは通常 VCS に配置され、そこで定義された設定がプロジェクトチーム間で共有されます。
ReSharper では、EditorConfig を使って ReSharper の オプション ダイアログで設定できる構文スタイルの環境設定を定義できます。 サポートされている EditorConfig プロパティの名前と説明は、 EditorConfig リファレンスにあります。
Clang-Format については、ReSharper では サポートされている Clang-Format オプションのみ適用します。
.editorconfig ファイルで定義された構文スタイルプロパティは、この .editorconfig ファイルが適用されるスコープ内で ReSharper 設定で定義された同じプロパティをオーバーライドする点にご注意ください。 Clang-Format で定義されたフォーマットプロパティは、ReSharper 設定と EditorConfig 設定の両方をオーバーライドします。
EditorConfig を使用して「var」キーワードの使用に関する設定を構成する
目的の .editorconfig ファイルを開きます。
必要な 「var」キーワードの使用箇所のプロパティをファイルに追加します。 たとえば、次のようになります。
for_built_in_types = use_var_when_evident
明確な場合は 'var' を使用する: 明らかと考えられるものは何ですか?
「var」キーワードと明示的なタイプを使用する 設定を構成する場合、 明確な場合は 'var' を使用する を選択できます。 このオプションは自明のように見えますが、場合によっては「明らか」と見なされるものとそうではないものが不明な場合があります。
それとは別に、両製品が「var」キーワードや明示的な型の使用を提案する際、ReSharper と Visual Studio が「明白(明白)」と見なす基準にはいくつか違いがあります。
下表は、ReSharper オプション Alt+R、O の ページにある 型の証拠には Roslyn(Visual Studio)ロジックを優先する チェックボックスの状態によって、「var」として宣言できるイニシャライザーが明らかと見なされる場合を示します。
初期化式 | サンプル例 | オフ | オン |
|---|---|---|---|
オブジェクト作成式 |
| 明らか | 明らか |
キャスト式 |
| 明らか | 明らか |
|
| 明らか | 明らか |
リテラル式 |
| 明らか | 明らか |
デフォルトの式 |
| 明らか | 明らか |
タプル式 |
| すべてのコンポーネント式が明らかな場合に明らか | |
明示的な配列作成式 |
| 明らか | 明らか |
暗黙的な配列作成式 |
| すべての要素初期化子(最大 42)が明らかな場合に明らか | 明らかではない |
非ジェネリクスファクトリ(作成)メソッド (ある型で宣言され、同じ型の値を返す静的メソッド) |
| メソッド名に親タイプ名または次の部分文字列のいずれかが含まれている場合に明らか: 「作成」、「ビルド」、「構築」、「作成」、「生成」、「生成」、「新規」、「インスタンス」 | 明らか |
一般的なファクトリ(作成)メソッド (ジェネリクス型を返し、戻り型と同じ名前のクラスで宣言された静的メソッド) |
| すべてのメソッド呼び出し引数が明白であり、メソッド名に次の部分文字列の 1 つまたはクラス名が含まれている場合に明らか: 「作成」、「ビルド」、「構築」、「作成」、「生成」、「生成」、「新規」、「インスタンス」 | 明らか |
変換方法 (「To」に戻り型の名前を加えた名前のメソッド) |
| 戻り値の型がジェネリクスでない場合に明らか | 明らか |
型引数の値を返す明示的な型引数を持つジェネリクスメソッド |
| 明らか | 明らかではない |
列挙型メンバー |
| 明らか | 明らかではない |
シングルトンフィールド (宣言されている型の値を返す静的 / 定数フィールド) |
| フィールド名にタイプ名または次の部分文字列のいずれかが含まれている場合に明らか: 「空」、「インスタンス」、「デフォルト」、「値」 | 明らかではない |
異なる言語での適用性
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。