C#
 Computer >> コンピューター >  >> プログラミング >> C#

C# 7.0のローカル関数とは?特徴と使い方を実例付きで解説

C# 7.0で導入されたローカル関数(Local Functions)は、別のメンバーの中に入れ子状に定義できるプライベートなメソッドです。最大の特徴は、そのローカル関数を定義したメンバー(親となるメソッドなど)からしか呼び出せないという点にあります。

これにより、特定のメソッド内でのみ使用する補助的な処理を、クラスの外部や他のメンバーから隠蔽しながら、すっきりと記述できます。

ローカル関数を宣言・呼び出しできる場所

ローカル関数は、以下のようなメンバーの中で宣言し、呼び出すことができます。

  • メソッド(特にイテレーターメソッドや非同期(async)メソッド)
  • コンストラクター
  • プロパティのアクセサー
  • イベントのアクセサー
  • 匿名メソッド
  • ラムダ式
  • ファイナライザー(デストラクター)
  • 他のローカル関数の中

例1:基本的なローカル関数

次の例では、Mainメソッド内に「addTwoNumbers」というローカル関数を定義し、2つの引数の合計をコンソールに出力しています。

class Program{
    public static void Main(){
        void addTwoNumbers(int a, int b){
            System.Console.WriteLine(a + b);
        }
        addTwoNumbers(1, 2);
        Console.ReadLine();
    }
}

出力結果

3

例2:outパラメーターを使ったローカル関数

ローカル関数は通常のメソッドと同様に、outパラメーターを使って値を返すこともできます。次の例では、計算結果をoutパラメーター経由で受け取り、表示しています。

class Program{
    public static void Main(){
        void addTwoNumbers(int a, int b, out int c){
            c = a + b;
        }
        addTwoNumbers(1, 2, out int c);
        System.Console.WriteLine(c);
        Console.ReadLine();
    }
}

出力結果

3

まとめ

ローカル関数を使うことで、メソッド内だけで使う処理を同じスコープ内に閉じ込めることができ、コードの可読性と保守性が向上します。特にイテレーターメソッドやasyncメソッドのように、引数の検証などを即座に行いたい場面で非常に有効な機能です。

  1. JavaScriptの部分関数(Partial Function)とは?仕組みと実装例をわかりやすく解説

    部分関数(Partial Function)とは、既存の関数を引数として受け取り、それに加えて別の型の引数も同時に受け取れるようにする仕組みです。まず渡された引数の一部を使い、残りの引数を受け取る新しい関数を返します。そして、返された関数が呼び出されるときに、あらかじめ固定しておいた引数とそのときに渡された引数をすべて組み合わせて、元の親関数が実行されます。 この手法は「部分適用(Partial Application)」とも呼ばれ、関数型プログラミングの基本的なテクニックのひとつです。共通する引数を先に束縛しておくことで、処理の再利用性やコードの可読性を高めることができます。 コード例 以下

  2. C言語の関数の分類とは?引数と戻り値による4つのカテゴリを解説

    C言語における関数は、引数(ひきすう)の有無と戻り値(返り値)の有無という2つの観点から、以下の4つのカテゴリに分類できます。引数なし・戻り値なしの関数引数なし・戻り値ありの関数引数あり・戻り値なしの関数引数あり・戻り値ありの関数それぞれのカテゴリについて、サンプルコードと実行結果を交えながら詳しく見ていきましょう。1. 引数なし・戻り値なしの関数このタイプの関数は、呼び出し元からデータを受け取らず、計算結果も返しません。関数内で入力・処理・表示をすべて完結させるため、単純な処理に向いています。サンプルコード#include<stdio.h>main() {