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

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

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

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