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

C#のparams配列を使ってメソッドに可変長の引数を渡す方法

メソッドを宣言するとき、実際にいくつの引数が渡されるのか事前には分からないケースがあります。こうした場面で役立つのが、C#のparams配列(パラメーター配列)です。paramsキーワードを使えば、呼び出し側が任意の個数の引数を渡せる柔軟なメソッドを定義できます。

paramsキーワードの基本的な書き方

paramsキーワードは、以下のように配列型の仮引数の前に記述します。

public int AddElements(params int[] arr) {
}

このように宣言されたメソッドは、int型の値をいくつでもカンマ区切りで受け取ることができます。

サンプルコード

次の例では、params配列を使って渡されたすべての整数の合計を計算しています。

using System;

namespace Program {
    class ParamArray {
        public int AddElements(params int[] arr) {
            int sum = 0;

            foreach (int i in arr) {
                sum += i;
            }
            return sum;
        }
    }

    class Demo {
        static void Main(string[] args) {
            ParamArray app = new ParamArray();
            int sum = app.AddElements(300, 250, 350, 600, 120);

            Console.WriteLine("The sum is: {0}", sum);
            Console.ReadKey();
        }
    }
}

実行結果

The sum is: 1620

上記のコードでは、AddElements(300, 250, 350, 600, 120) のように5つの整数を直接渡しています。これらの値は自動的に int[] 配列としてまとめられ、メソッド内では foreach ループで順番に処理されます。

paramsキーワードを使用する際の注意点

  • 引数リストの最後に指定する: paramsパラメーターは、メソッドの仮引数リストの中で必ず最後に配置する必要があります。
  • 1つのメソッドに1つだけ: paramsキーワードは、1つのメソッド宣言につき1回しか使用できません。
  • 引数なしでも呼び出し可能: paramsパラメーターには、引数を一切渡さずにメソッドを呼び出すこともできます。その場合、空の配列が渡されたものとして扱われます。
  • 配列をそのまま渡すことも可能: 個別の値だけでなく、あらかじめ作成した配列をそのまま引数として渡すこともできます。

このようにparams配列を活用することで、引数の数が不定となる処理(合計計算、文字列の連結、ログ出力など)をシンプルかつ読みやすいコードで実装できます。

  1. C#でポインターをメソッドのパラメーターとして渡す方法を解説

    C#でポインターをメソッドのパラメーターとして渡す方法C#では、unsafeキーワードを使用することで、ポインターをメソッドのパラメーターとして渡すことができます。本記事では、2つの変数の値を入れ替えるswap関数を例に、具体的な実装手順を解説します。手順1:unsafe修飾子を付けたswap関数を作成するまず、unsafe修飾子を付けたswap関数を作成します。この関数は2つのint型ポインターを受け取り、ポインターが指し示す先の値を入れ替えます。public unsafe void swap(int* p, int *q) { int temp = *p; *p = *q;

  2. C#のメソッドにパラメーターを渡す方法とは?値渡しの仕組みとサンプルコード

    C#でメソッドにパラメーターを渡す基本的な方法のひとつが「値渡し(値パラメーター)」です。この仕組みでは、メソッドが呼び出されると、各値パラメーターに対して新しいストレージ領域が作成されます。そして、呼び出し元の実際の引数の値がその新しい領域へコピーされます。そのため、メソッド内でパラメーターに対して行った変更は、呼び出し元の引数には一切影響しません。値渡しのポイントメソッド呼び出し時に、パラメーターごとに新しい記憶領域が確保される引数の値がコピーされるため、元の変数は保護されるメソッド内での変更は呼び出し元に反映されない以下は、メソッドにパラメーターを渡す動作を確認できるサンプルコードです。