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キーワードを活用すると、オーバーロードを大量に定義しなくても、さまざまな数の引数に対応できる便利なメソッドを作成できます。
-
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
-
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続いて、ラ