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

C#の可変長引数(params)の使い方をわかりやすく解説

C#では、paramsキーワードを使用することで、可変長引数(可変個の引数)を受け取れるメソッドを定義できます。これにより、呼び出し側で引数の数を自由に変更できるため、柔軟なメソッド設計が可能になります。

paramsキーワードによるメソッド定義

以下は、整数の掛け算を行うメソッドの例です。paramsキーワードを使うことで、任意の数のint型の値を受け取れるようになっています。

static int Multiply(params int[] b)

このメソッドは、引数が1つでも2つでも、さらにそれ以上でも同じように呼び出すことができます。実際に、複数の値を渡して同じ関数を呼び出す例を見てみましょう。

int mulVal1 = Multiply(5);
int mulVal2 = Multiply(5, 10);

最初の呼び出しでは1つの値「5」を渡し、2回目の呼び出しでは2つの値「5」と「10」を渡しています。どちらの場合も、同じMultiplyメソッドが実行されます。

サンプルコード(完全版)

可変長引数がC#でどのように動作するのか、完全なコードで確認してみましょう。

using System;

class Program {
    static void Main() {
        int mulVal1 = Multiply(5);
        int mulVal2 = Multiply(5, 10);

        Console.WriteLine(mulVal1);
        Console.WriteLine(mulVal2);
    }

    static int Multiply(params int[] b) {
        int mul = 1;
        foreach (int a in b) {
            mul = mul * a;
        }
        return mul;
   }
}

実行結果

5
50

コードの解説

Multiplyメソッド内では、foreachループを使って配列bに格納されたすべての要素を順番に取り出し、それぞれを掛け合わせています。初期値が1に設定されているため、引数が1つの場合はその値がそのまま返されます。

この例では、「Multiply(5)」の結果として5が出力され、「Multiply(5, 10)」の結果として50が出力されます。

paramsキーワード使用時の注意点

  • paramsパラメータはメソッドの引数リストの最後に配置する必要があります。
  • 1つのメソッドにつき、paramsパラメータは1つだけ指定できます。
  • 引数を1つも渡さずに呼び出すことも可能で、その場合は空の配列が渡されます。

このように、paramsキーワードを活用すると、オーバーロードを大量に定義しなくても、さまざまな数の引数に対応できる便利なメソッドを作成できます。

  1. NumPyのlegmulx()メソッドでルジャンドル級数に独立変数xを掛ける方法

    ルジャンドル級数 c に独立変数 x を掛けるには、Python の NumPy が提供する polynomial.legendre.legmulx() メソッドを使用します。このメソッドは、乗算の結果を表す配列を返します。引数として渡すのは、低次の項から高次の項へと順序付けられた係数のシーケンスです。たとえば [1, 2, 3] は、P_0 + 2*P_1 + 3*P_2 という級数を表します。パラメータ c は、低次から高次の順に並べられたルジャンドル級数の係数を持つ 1 次元配列です。手順まず、必要なライブラリをインポートします。import numpy as np from numpy

  2. PythonのNumPyでラゲール級数に独立変数xを掛ける方法(lagmulx関数の使い方)

    ラゲール級数に独立変数 x を掛けたい場合には、Python の NumPy が提供する numpy.polynomial.laguerre.lagmulx() メソッドを使用します。このメソッドは、引数として渡されたラゲール級数 c に独立変数 x を掛けた結果を、新しいラゲール級数として返してくれます。パラメータ c は、次数の低い項から高い項へと順番に並べられたラゲール級数の係数を格納した 1 次元配列です。実行手順まず、必要なライブラリをインポートします。import numpy as np from numpy.polynomial import laguerre as L続いて、ラ