本文へスキップ
BecomeCoder

C#文法コース · 第4章 メソッド · レッスン31

オプション引数・名前付き引数

ブラウザで完結

導入

引数に既定値を設定すると、呼び出し時に省略できます(オプション引数)。また、どの引数に何を渡すかを名前で明示すると読みやすくなります(名前付き引数)。

図解

flowchart TB
    D["定義: Send(string msg, bool urgent = false)"] --> C1["Send(&quot;hi&quot;)<br/>→ urgent は既定の false"]
    D --> C2["Send(&quot;hi&quot;, urgent: true)<br/>→ 名前付きで明示"]

サンプル

// urgent には既定値 false を設定 → 省略できる
Notify("会議のお知らせ");                 // urgent は false
Notify("緊急連絡", urgent: true);         // 名前付きで true を指定

void Notify(string message, bool urgent = false)
{
    string mark = urgent ? "【緊急】" : "";
    Console.WriteLine($"{mark}{message}");
}
// 会議のお知らせ
// 【緊急】緊急連絡
  • 引数 = 既定値 とすると、その引数は省略可能(オプション引数)
  • 省略された場合は既定値が使われる
  • 引数名: 値 の形で名前付き引数にでき、意図が明確になる
  • オプション引数は通常の引数より後ろに置く

演習

// TODO: price に加えて、税率 rate を既定値 0.1 のオプション引数として受け取り、
//       税込価格を返す WithTax メソッドを定義してください。
//       WithTax(1000) の結果を "1100" と出力してください
___
  • 期待される出力: 1100
ヒント1を見る

int WithTax(int price, double rate = 0.1) { return (int)(price * (1 + rate)); }

ヒント2を見る

Console.WriteLine(WithTax(1000)); int WithTax(int price, double rate = 0.1) { return (int)(price * (1 + rate)); }

まとめ

  • 引数 = 既定値でオプション引数(省略可能)にできる
  • 引数名: 値の名前付き引数で呼び出しが読みやすくなる
  • オプション引数は必須引数より後ろに書く

次回: 値を「参照」で渡すrefと、複数の結果を返すoutです。

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

C# — ブラウザ内で実行

ブラウザ内でC#を動かす環境を読み込みます(初回のみ数秒)。
スクロールして表示された時点でも自動で読み込まれます。