所以我有一个功能
public int Sum(var valueA, var valueB, var valueC) {
var summ = valueA + valueB;
return summ;
}
如果给出,我想添加到sumS值。如果用户不愿意,请让用户不要指定。怎么做这个?
答案 0 :(得分:4)
您可以使用optional arguments在C#4.0中执行此操作。 如果您使用的是C#4.0之前的版本,则可以创建一个使用默认值调用函数的重载函数。
答案 1 :(得分:3)
如果您使用的是.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
当然,执行此操作的经典方法是使用方法重载:
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);
如果您希望能够使用string
以及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
,那么你将需要更多的重载 - 这可能是过度的。
答案 2 :(得分:1)
除了Shane Fulmer提供的选项之外,您还可以使用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;
}