ステートメントの補完
このコマンドは、必要な構文要素(括弧、中括弧、セミコロンなど)を挿入し、次のステートメントの入力を開始できる位置に移動します。
ステートメント補完
ステートメントのコアを入力します(例については以下のシナリオを参照)。
Control+Shift+Enter を押すか、メインメニューから を選択してください。 あるいは、 Control+Shift+A を押して、ポップアップでコマンド名を入力して、そこで選択することもできます。
このコマンドは、括弧の自動クローズ、セミコロンの追加、 if、 while、 for ステートメントの補完など、さまざまなシナリオで役立ちます。
例: 新しいメソッドを宣言するたびに、ステートメント補完はメソッドのパラメーターを指定した後に便利です:
この時点で、メソッド本体の記述を開始するには、通常次のようにしなければなりません。
括弧がない場合は挿入してください。
Enter を押します。
開口部波括弧を挿入します。
もう一度 Enter を押してください。
ReSharper を使うと、 Control+Shift+Enter を押すだけで、閉じ丸括弧と両方の中括弧が自動的に挿入され、メソッド本体の記述を続行できる場所にキャレットが配置されます:
同様の方法で、ステートメント補完は次の言語構成で動作します。
型と型のメンバー: クラス、インターフェース、構造体、列挙型、デリゲート、フィールド、イベント、メソッドの宣言。
ステートメント:
if、while、do、switch、using、lock、continue、break、およびreturnステートメント;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(myVar != null/*caret*/
|
if(myVar != null)
{
/*caret*/
}
|
|
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*/
|
この機能は、次の言語とテクノロジーで サポートされています。
ここで説明する手順と例では、C# の機能の使用について説明します。 他の言語の詳細については、 言語およびフレームワーク セクションの対応するトピックを参照してください。