C#不定长参数 params

通过使用关键字params,可以指定可变数量的方法参数。

参数类型必须是一维数组。关键字params后不允许有额外的参数,并且一个方法声明只允许使用一个params关键字。如果声明的类型参数参数不是一维数组,编译器错误CS0225发生。

当您用params参数,您可以传入:
1、数组元素类型的参数的逗号分隔列表。
2、指定类型的参数数组。
3、无参。如果不发送参数,则参数列表为零。

示例:

// 不定长整形数组参数
public void UseParams(params int[] list)
{
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < list.Length; i++)
    {
        builder.Append(list[i]);
        builder.Append(" ");
    }
    Debug.Log(builder.ToString());
}

// 不定长、不定类型数组参数
public void UseParams2(params object[] list)
{
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < list.Length; i++)
    {
        builder.Append(list[i]);
        builder.Append(" ");
    }
    Debug.Log(builder.ToString());
}

void Start()
{
    // 可以传递用逗号分隔的指定类型的参数列表,即直接传不定长参数
    UseParams(1, 2, 3, 4);
    UseParams2(1, 'a', "test");
    UseParams2(5, 6, 7, 8, 9);

    // 一个用params声明的参数数组,可以接受0个或以上的参数
    UseParams2();

    // 也可以直接传递指定类型的数组作为参数
    int[] myIntArray = { 5, 6, 7, 8, 9 };
    UseParams(myIntArray);

    object[] myObjArray = { 2, 'b', "test", "again" };
    UseParams2(myObjArray);

    // 下面的调用不会报错,但是整个整形数组会变成参数数组的首个元素
    UseParams2(myIntArray);
}

/*
Output:
    1 2 3 4
    1 a test

    5 6 7 8 9
    2 b test again
    System.Int32[]
*/

你可能感兴趣的:(C#,c#)