如何设置哪些功能输入是必需的,哪些不是(C#)

时间:2010-04-24 16:03:47

标签: c# .net function

所以我有一个功能

public int Sum(var valueA, var valueB, var valueC) { 
  var summ = valueA + valueB; 
  return summ; 
} 

如果给出,我想添加到sumS值。如果用户不愿意,请让用户不要指定。怎么做这个?

3 个答案:

答案 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)
{
    ...
}

如果你想应对混合的stringint,那么你将需要更多的重载 - 这可能是过度的。

答案 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; 
}