所以我有一个功能如何设置这些功能的输入是必需的,哪些不是(C#)
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
我想要添加到萨姆valueC如果它被赋予。让用户不要指定它,如果他不想。如何做这样的事情?
所以我有一个功能如何设置这些功能的输入是必需的,哪些不是(C#)
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
我想要添加到萨姆valueC如果它被赋予。让用户不要指定它,如果他不想。如何做这样的事情?
除了肖恩富尔默提供,您还可以使用params关键字有一个函数,采用可变数量的参数选项:如果你想
public int Sum(params int[] values)
{
int sum = 0;
for(int i = 0; i < values.Length; i++){
sum+=values[i];
}
return sum;
}
int answer2Parameters = Sum(1, 5);
int answer3Parameters = Sum(1, 2, 3);
int answer4Parameters = Sum(1, 3, 5, 6);
当然要限制他们确切地两个或三个,那么你可能想在C#4.0中查看可选参数或重载Sum函数 - 我的意思是创建两个Sum函数,一个需要两个参数,另一个需要3个参数。
public int Sum(int valueA, int valueB) {
int summ = valueA + valueB;
return summ;
}
public int Sum(int valueA, int valueB, int valueC) {
int summ = valueA + valueB + valueC;
return summ;
}
以及如何同时使用ints []和字符串[]?以及如何指定数组中的值的名称? – Rella 2010-04-24 16:23:46
@ Ole有许多方法可以做到这一点,但根据您的要求,最好的设计可能会有所不同。您是否期望您将发送int或字符串“数字”,或者您是否希望此方法能够将ints和concatenate字符串相加?如果第二个选项是您正在查找的内容,那么使用两个方法称为用于整数的Sum和另一个称为用于字符串的Concatenate更合理。另一方面,如果您正在寻找Sum整数或字符串数字,则可以创建对象数组或重载该方法。 – 2010-04-24 17:49:39
@Ole还指定数组中的值的名称是什么意思?该方法的参数被添加到名为values的数组参数中。值[0]具有第一个参数值[1]具有第二个参数,依此类推。如果需要,可以手动将它们从方法代码中的数组中分离出来。 – 2010-04-24 17:51:25
您可以在C#4.0中使用optional arguments来完成此操作。 如果您使用的是C#4.0之前的版本,则可以创建一个重载函数,该函数使用默认值调用您的函数。
如果您使用的是.NET 3.5或更早版本,则可以使用Nullable Types。
public int Sum(int valueA, int valueB, int? valueC)
{
int sum = valueA + valueB;
if (valueC.HasValue)
{
sum += valueC.Value;
}
return sum;
}
的呼声是:
int answer1 = Sum(1, 2, 3); // = 6
int answer2 = Sum(1, 2, null); // = 3
当然经典的方式做到这一点是使用方法重载:如果你希望能够使用string
作为
public int Sum(int valueA, int valueB)
{
int sum = valueA + valueB;
return sum;
}
public int Sum(int valueA, int valueB, int valueC)
{
int sum = valueA + valueB + valueC;
return sum;
}
int answer1 = Sum(1, 2);
int answer2 = Sum(1, 2, 3);
以及int
移动到.NET4或创建另一对重载方法:
public int Sum(string valueA, string valueB)
{
// Convert the strings to int and call the previous code
// You will need to cope with the case when the strings don't represent numbers
}
public int Sum(string valueA, string valueB, string valueC)
{
...
}
如果你想应对混合string
和int
那么你将需要更多的重载 - 这可能是矫枉过正。
为什么标记为WPF? – 2010-04-24 16:13:29