bucket-sort logo bucket-sort

プログラミングとインフラエンジニアリングの覚え書き

  • Posts
  • About
  • Contact
  1. Home
  2. All Posts
  3. [C#] Named Arguments(名前付き引数)

[C#] Named Arguments(名前付き引数)

Apr 11, 2026 C# , .NET bucket-sort

C# 4.0 で導入された Named Arguments(名前付き引数) を使うと、メソッド呼び出し時に パラメータ名: 値 の形式で引数を渡せます。引数の順番に縛られないため、複数の引数を持つメソッドの呼び出しが読みやすくなります。

基本構文

void PrintInfo(string name, int age, string city)
{
    Console.WriteLine($"{name}, {age}歳, {city}");
}

// 通常の呼び出し(位置で引数を対応付ける)
PrintInfo("Alice", 30, "Tokyo");

// Named Arguments を使った呼び出し
PrintInfo(name: "Alice", age: 30, city: "Tokyo");

パラメータ名: を付けるだけで、引数がどの項目に対応するかが一目でわかります。

順番を変えて呼び出す

Named Arguments の最大のメリットは、引数の順番を自由に変えられる点です。

// 順番を入れ替えても OK
PrintInfo(city: "Tokyo", name: "Alice", age: 30);
PrintInfo(age: 30, city: "Tokyo", name: "Alice");

どちらも name: "Alice", age: 30, city: "Tokyo" と同じ結果になります。

位置引数と Named Arguments の混在

Named Arguments は位置引数(名前なし)と混在させることもできます。ただし、位置引数は Named Arguments より前に置く必要があります。

// OK — 先頭から位置引数、残りを Named Arguments
PrintInfo("Alice", age: 30, city: "Tokyo");

// OK — 途中から Named Arguments
PrintInfo("Alice", 30, city: "Tokyo");

// NG — 位置引数が Named Arguments の後に来ている
// PrintInfo(name: "Alice", 30, city: "Tokyo"); // コンパイルエラー

C# 7.2 以降では、Named Arguments の後に位置引数を置けるケースが緩和されました。ただし、Named Arguments で順番を変えた引数よりも後にある位置引数には適用できません。

Optional Arguments(省略可能な引数)との組み合わせ

Named Arguments は、デフォルト値を持つ Optional Arguments(省略可能な引数) と組み合わせると特に威力を発揮します。

void CreateUser(
    string name,
    int age = 0,
    string role = "user",
    bool isActive = true)
{
    Console.WriteLine($"{name}, {age}歳, {role}, active={isActive}");
}

// 全引数を位置で渡す場合、途中だけ変えたいときは冗長になる
CreateUser("Alice", 0, "admin", true);

// Named Arguments なら必要な引数だけ指定できる
CreateUser("Alice", role: "admin");

省略した age は 0、isActive は true がそれぞれデフォルト値として使われます。

可読性の向上

bool や数値リテラルを並べる呼び出しは、Named Arguments なしでは意味が掴みにくくなりがちです。

// 何の引数か分かりにくい
SendEmail("alice@example.com", true, false, 3);

// Named Arguments で意図が明確になる
SendEmail(
    to: "alice@example.com",
    includeAttachment: true,
    sendCopy: false,
    retryCount: 3);

オーバーロードとの関係

Named Arguments はオーバーロードの解決にも影響します。コンパイラは Named Arguments のパラメータ名も含めてオーバーロードを選択します。パラメータ名が異なれば別のオーバーロードが選ばれることはありませんが、同じ名前のパラメータを持つメソッドが複数ある場合はコンパイルエラーになります。

まとめ

特徴 説明
導入バージョン C# 4.0
構文 パラメータ名: 値
引数の順番 自由に変えられる
位置引数との混在 可(位置引数が先)
Optional Arguments との組み合わせ 任意の引数だけ指定できる

Named Arguments は引数が多いメソッドや bool リテラルを多用するメソッドで特に有効です。Optional Arguments と組み合わせて、呼び出し側のコードをシンプルかつ意図が伝わりやすい形に整えましょう。

C# .NET Named Arguments オプション引数
← [C#] メソッドパラメータの修飾子 — out / ref / in / params [C#] ArgumentNullException.ThrowIfNull で null チェックを 1 行に →

Related Posts

  • [C#] Finalizable & Disposable パターン実践 — Dispose パターンの完全形 May 13, 2026
  • [C#] Disposable Objects — IDisposable / Dispose() と using 構文 May 12, 2026
  • [C#] Finalizable Objects — Finalize() の役割と使いどころ May 11, 2026
  • [C#] System.GC クラスを整理する — ガベージコレクションを制御するための API May 10, 2026

Table of Contents

  • 基本構文
  • 順番を変えて呼び出す
  • 位置引数と Named Arguments の混在
  • Optional Arguments(省略可能な引数)との組み合わせ
  • 可読性の向上
  • オーバーロードとの関係
  • まとめ

Recent Posts

  • [C#] Finalizable & Disposable パターン実践 — Dispose パターンの完全形 May 13, 2026
  • [C#] Disposable Objects — IDisposable / Dispose() と using 構文 May 12, 2026
  • [C#] Finalizable Objects — Finalize() の役割と使いどころ May 11, 2026
  • [C#] System.GC クラスを整理する — ガベージコレクションを制御するための API May 10, 2026
  • [C#] IComparable と IComparer — オブジェクトの順序比較と複数ソート戦略 May 9, 2026

Categories

  • C#63
  • .NET62
  • AWS27
  • Laravel16
  • Linux15
  • MySQL9
  • Apache8
  • PHP8
  • DynamoDB6
  • セキュリティ6
  • Nginx5
  • WordPress4
  • インフラ4
  • Hugo3
  • .NET Framework1
  • Aurora1
  • Filament1
  • Git1
  • SQS1

Tags

  • C#
  • .NET
  • AWS
  • Laravel
  • PHP
  • セキュリティ
  • MySQL
  • Linux
  • Apache
  • Code Snippet
  • DynamoDB
  • NoSQL
  • PHP-FPM
  • RDS
  • パフォーマンス
  • DoS
  • Nginx
  • Windows
  • WordPress
  • メモリ管理
  • 監視
  • 設計
  • Amazon Linux 2023
  • Docker
  • IDisposable
  • Ipset
  • Iptables
  • OPCache
  • Webサーバー
  • オブジェクト指向
  • クラス設計
  • コレクション
  • デザインパターン
  • パターンマッチング
  • 継承
  • 認可
  • Aurora
  • Blade
  • Grafana
  • Hugo
  • InfluxDB
  • Policy
  • Record
  • SSG
  • インターフェース
  • エラーハンドリング
  • カプセル化
  • ガベージコレクション
  • モニタリング
  • 例外
Powered by Hugo & Explore Theme.