JetBrains Rider 2024.3 ヘルプ

ステートメントの補完

このコマンドは、必要な構文要素(括弧、中括弧、セミコロンなど)を挿入し、次のステートメントの入力を開始できる位置に移動します。

ステートメント補完

  1. ステートメントのコアを入力します(例については以下のシナリオを参照)。

  2. Ctrl+Shift+Enter を押します。

このコマンドは、括弧の自動クローズ、セミコロンの追加、ifwhilefor ステートメントの補完など、さまざまなシナリオで役立ちます。

例: 新しいメソッドを宣言するたびに、ステートメント補完はメソッドのパラメーターを指定した後に便利です:

public void Foo(string input

この時点で、メソッド本体の記述を開始するには、通常次のようにしなければなりません。

  • 括弧がない場合は挿入してください。

  • Enter を押します。

  • 開口部波括弧を挿入します。

  • もう一度 Enter を押してください。

JetBrains Rider を使用すると、Ctrl+Shift+Enter を押すだけで、閉じ括弧と両方の中括弧が自動的に挿入され、メソッド本体の記述を続行できる場所にキャレットが配置されます。

public void Foo(string input) { // the caret is here }

同様の方法で、ステートメント補完は次の言語構成で動作します。

  • 型と型のメンバー : クラス、インターフェース、構造体、列挙型、デリゲート、フィールド、イベント、メソッドの宣言。

  • ステートメント : ifwhiledoswitchusinglockcontinuebreakreturn ステートメント。case および default 節。単一行ステートメントからブロックステートメントへの変換。

  • : 呼び出し、要素アクセス、文字列 / 文字リテラル。オブジェクト、メンバー、コレクションアイテムの初期化子。匿名型と暗黙的に型指定された配列を作成する式。

以下に、異なる文脈で完全な文コマンドを適用する例をいくつか見てみましょう。

ユースケース

ステートメント補完より前

ステートメント補完の後

クラス宣言

public class Foo/*caret*/
public class Foo { /*caret*/ }

デリゲート宣言

delegate void ChangeHandler(object sender/*caret*/
internal delegate void ChangeHandler(object sender); /*caret*/

ネストされたメソッドの呼び出し

myVar.DoSomething(foo.Bar(value/*caret*/
myVar.DoSomething(foo.Bar(value)); /*caret*/

if ステートメント

if(myVar != null/*caret*/
if(myVar != null) { /*caret*/ }

case

switch (position) { case Position.Last/*caret*/ }
switch (position) { case Position.Last: /*caret*/ }

単一行ステートメントのブロックへの変換 (ケース A)

if(myVar != null) position = Position.Last;/*caret*/
if(myVar != null) { position = Position.Last; /*caret*/ }

単一行ステートメントのブロックへの変換 (ケース B)

if(myVar != null) /*caret*/position = Position.Last;
if(myVar != null) { /*caret*/ position = Position.Last; }

要素アクセス式

var myValues = new Value[10/*caret*/
var myValues = new Value[10]; /*caret*/