将多个可选参数传递给C#函数

时间:2010-01-03 21:38:35

标签: c# function parameters

有没有办法设置C#函数来接受任意数量的参数?例如,您是否可以设置一个函数,以便以下所有工作 -

x = AddUp(2, 3)

x = AddUp(5, 7, 8, 2)

x = AddUp(43, 545, 23, 656, 23, 64, 234, 44)

3 个答案:

答案 0 :(得分:134)

参数数组params修饰符一起使用:

public static int AddUp(params int[] values)
{
    int sum = 0;
    foreach (int value in values)
    {
        sum += value;
    }
    return sum;
}

如果您想确保至少一个值(而不是可能为空的数组),请单独指定:

public static int AddUp(int firstValue, params int[] values)

(将sum设置为firstValue以从实施开始。)

请注意,您还应该以正常方式检查数组引用是否为null。在该方法中,参数是完全普通的数组。当调用方法时,参数数组修饰符只会有所不同。编译器基本上转向:

int x = AddUp(4, 5, 6);

成像:

int[] tmp = new int[] { 4, 5, 6 };
int x = AddUp(tmp);

可以用完全正常的数组调用它 - 所以后一种语法在源代码中也是有效的。

答案 1 :(得分:5)

C#4.0还支持可选参数,这在其他一些情况下可能很有用。请参阅this文章。

答案 2 :(得分:0)

1。您可以进行重载功能。

SELECT
    ta.t_name,
    tb.t_name
FROM
    matches m
    INNER JOIN team as ta on ta.t_id = matches.team_a
    INNER JOIN team as tb on tb.t_id = matches.team_b

更多信息:http://csharpindepth.com/Articles/General/Overloading.aspx

2。或者您可以使用params创建一个函数

SomeF(strin s){}   
SomeF(string s, string s2){}    
SomeF(string s1, string s2, string s3){}   

更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/params

3。或者您可以使用简单数组

SomeF( params string[] paramArray){}
SomeF("aa","bb", "cc", "dd", "ff"); // pass as many as you like
相关问题