本文へスキップ
BecomeCoder

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

式本体メンバーとローカル関数

ブラウザで完結

導入

return1つだけの短いメソッドは=>で1行に書けます(式本体)。また、メソッドの中だけで使う小さな関数ローカル関数として定義できます。どちらもコードを簡潔・明確にします。

図解

flowchart TB
    A["int Square(int n)<br/>{ return n * n; }"] -->|同じ意味| B["int Square(int n) => n * n;"]
    C["メソッドの中だけで使う<br/>小さな補助関数"] --> D["ローカル関数として内側に定義"]

サンプル

// 式本体メンバー: { return ...; } を => ...; で1行に
int Square(int n) => n * n;
Console.WriteLine(Square(5));   // 25

// ローカル関数: メソッド(やトップレベル)の中に閉じた関数
Console.WriteLine(Factorial(4));   // 24

int Factorial(int n)
{
    // Helper はこの中でだけ使える補助関数
    int Helper(int x) => x <= 1 ? 1 : x * Helper(x - 1);
    return Helper(n);
}
  • メソッド(...) => 式;{ return 式; }の短縮形(式本体メンバー
  • ローカル関数は他のメソッドの内側に定義する、その場限りの関数
  • 「1行で書ける」「外部に公開する必要がない」処理を簡潔に表現できる

演習

// TODO: 摂氏を華氏に変換する式本体メソッド ToF を定義してください(華氏 = 摂氏 * 9 / 5 + 32)
//       ToF(20) の結果を "68" と出力してください
___
  • 期待される出力: 68
ヒント1を見る

int ToF(int c) => c * 9 / 5 + 32;

ヒント2を見る

Console.WriteLine(ToF(20)); int ToF(int c) => c * 9 / 5 + 32;

まとめ

  • => 式;でメソッドを1行に書ける(式本体メンバー)
  • ローカル関数はメソッド内に閉じた補助関数
  • どちらも「簡潔さ」と「意図の明確さ」に貢献する

次回: 既存の型に後付けでメソッドを生やす「拡張メソッド」です。

実際に動かしてみよう

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

C# — ブラウザ内で実行

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