JetBrains Rider 2020.2ヘルプ

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

C# 3.0で導入された暗黙的に型付けされたローカル変数(英語)var キーワードとも呼ばれます)(英語)を使用すると、多くのシナリオで読みやすくなるため、非常に人気があります。デフォルトでは、ReSharperは var キーワードの使用も推奨しますが、その使用の設定柔軟に構成可能です。たとえば、特定のケースまたはどこでも明示的なタイプを使用することを選択でき、JetBrains Riderは設定を適用できます。

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

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

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

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

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

'Var' usage quick-fix
設定を変更すると、JetBrains Riderは明示的なタイプを使用できます:
'Var' usage quick-fix

一括モードで 'var'キーワードの使用方法を優先するためのもう1つのオプションは、コードのクリーンアップです。デフォルトのプロファイルフルクリーンアップまたは再フォーマットして構文スタイルを適用のいずれかを使用してコードのクリーンアップを実行するか、または以下に説明されているように特定のタスク専用のカスタムプロファイルを作成して実行することができます。

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

  1. Ctrl+Alt+S を押すか、メニューからファイル | 設定(WindowsおよびLinux)またはJetBrains Rider | 環境設定(macOS)を選択します。

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

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

  4. 設定ダイアログで保存をクリックして変更を適用し、JetBrains Riderに保存場所を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、レイヤーベースの設定を参照してください。

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

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

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

  6. メインメニューのコード | コードのクリーンアップを選択します。

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

  8. OKをクリックします。JetBrains Riderは選択した範囲内であなたの設定を強制します。

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

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

「設定/環境設定」ダイアログで「var」キーワードを使用する設定を構成する

  1. JetBrains Rider設定 Ctrl+Alt+Sエディター | コード・スタイル | C#ページに移動し、構文スタイルタブを選択します。

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

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

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

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

    • 他の場所 - ジェネリック型と分解宣言に適用されます。

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

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

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

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

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

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

  7. 設定ダイアログで保存をクリックして変更を適用し、JetBrains Riderに保存場所を選択させるか、次へ保存リストを使用して特定の設定レイヤーに変更を保存します。詳細については、レイヤーベースの設定を参照してください。

また、エディターで 'var' キーワードを使用することの好みを変更することもできます。該当する課題が強調表示されます:

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

  1. キャレットにJetBrains Riderのインスペクションで強調表示されたコードの課題を設定します。

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

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

    Changing code style preference for 'var' keyword

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

  5. 変更されたスタイル設定を共有設定レイヤーに保存する必要がある場合は、コードスタイルを設定するメニュー項目をクリックするか、選択されているときに Enter を押します。JetBrains Riderは、JetBrains Rider設定 Ctrl+Alt+Sエディター | コード・スタイル | C# | 構文スタイルページを開きます。ここで、必要に応じて設定を変更し、次へ保存をクリックして、目的の設定レイヤーを選択します。

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

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

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

次の表は、JetBrains Rider設定 Ctrl+Alt+Sエディター | コード・スタイル | C# | 構文スタイルページの型の証拠にはRoslyn(Visual Studio)ロジックを優先するチェックボックスの状態に応じて、'var' として宣言できる初期化子が明らかと見なされる場合を示しています。

初期化式サンプルオフオン
オブジェクト作成式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フィールド名にタイプ名または次のサブストリングのいずれかが含まれている場合に明らか: 「空」、「インスタンス」、「デフォルト」、「値」明らかではない
最終更新日:

関連ページ:

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

JetBrains Riderは、エディターでコードファイルを開くとすぐに、コードファイルが閉じられるまで分析を開始します。検出されたすべてのコードの課題は、重大度に応じてエディターで強調表示されます。課題のマップは、エディターウィンドウの右側のエラーストライプにも表示されます。ここでは、ファイルの...

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

JetBrains Riderを使用すると、設計時に検出されたほとんどのコード課題を即座に修復できます。強調表示されたコードの課題で を押して、課題を解決したり最適以下のコードを改善したりするための適切な方法を選択するのと同じくらい簡単です。クイックフィックスを適用する:クイックフィックスは、ハイ...

スコープの修正

ほとんどのクイックフィックスは、キャレットで現在の課題を修正できますが、中には (たとえば、未使用のディレクティブを削除する、フィールドを読み取り専用にする、冗長なキャストの除去など)、現在のファイル、現在のプロジェクト、またはソリューション全体など、より大きな範囲で課題を自動的に見つけて修正できる...

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

コード注釈を使用して、JetBrains Riderがコードをインスペクションする方法をカスタマイズすることもできます。設計時コードインスペクションを構成する:デフォルトでは、JetBrains Riderはサポートされている言語に対応するすべてのファイルで設計時コードインスペクションを有効にします...

コードのクリーンアップ

コード | コードのクリーンアップ...コマンドラインユーティリティを使用してコードのクリーンアップを実行することもできます。JetBrains Riderを使用すると、フォーマットやその他のコードスタイル設定を一括モードで適用して、1つ以上のファイル、プロジェクト、またはソリューション全体でコード...

レイヤーベースの設定

Rider設定ダイアログ では、ページアイコンを見て、特定のページに使用されている設定管理メカニズムを確認できます。任意のアイコンでマークされていないページは、ユーザープロファイルに保存されているIDE設定をホストします。レイヤーベースの設定はReSharperと互換性があるため、ReSharper...