佐々木屋

技術的なことから趣味まで色々書きます

可変長引数②

可変長引数は引数無しで呼べる

可変長引数のメソッドに対してなにも指定せずメソッドを呼ぶと、nullが渡されます。つまり、メソッド側は空配列が作成されます。

private void TotalSum3(params int[] values) {
    Console.WriteLine(values.Count());
}

public static void Main() {
    TotalSum3();
}
Private Sub TotalSum3(ParamArray values As Integer())
    Console.WriteLine(values.Count())
End Sub

Public Sub Main()
    TotalSum3()
End Sub
0


可変長引数で指定できるのは配列のみ

System.Collections.Generic名前空間であるIEnuemrable インターフェイスは配列のような性質を持っていますが可変長引数で指定することはできません。当然、派生であるListクラスも利用できません。

以下はコンパイルエラーになります。

private void TotalSum(params IEnumerable<int> values) {

private void TotalSum(params List<int> values) {
Private Sub TotalSum(ParamArray values As IEnumerable(Of integer))

Private Sub TotalSum(ParamArray values As List(Of Integer))