将多个数字传递给使用params修饰符的Add方法?

时间:2018-06-02 19:50:38

标签: c#

请参阅此答案:Pass multiple optional parameters to a C# function 关于Params的问题(到一点)。我想知道的是,如何(如果可能的话)这可以用于获取用户输入而不是预定义的数字? 所以,我知道我可以做Console.Write(calculator.Add(1,43,23))但是想处理用户输入。

class Program
{
    static void Main(string[] args)
    {
        var calculator = new Calculator();
        var input = Convert.ToInt32(Console.ReadLine());

        Console.WriteLine(calculator.Add(input));
    }
}

public class Calculator
{
    public int Add(params int[] numbers)
    {
        var sum = 0;
        foreach (var number in numbers)
        {
            sum += number;
        }
        return sum;
    }
}

2 个答案:

答案 0 :(得分:0)

您可以将所有用户输入存储在一个数组中,并将该数组传递给Add

var calculator = new Calculator();
var input = Array.ConvertAll<int>(Console.ReadLine().Split(' '));
calculator.Add(input);

答案 1 :(得分:-2)

这些方面的东西应该有效。我可能犯了语法错误:D

using System;
class Program
{
    static void Main(string[] args)
    {
        var calculator = new Calculator();
        var input = GetNumbers();
        calculator.Add(input);
        Console.WriteLine(calculator.Add(input));
    }

    public static int[] GetNumbers()
    {
      Console.WriteLine("Enter Numbers Seperated With a Space");
      string input = Console.ReadLine(); //Get user input with this
      string[] arr = input.Split(' '); //Split the input at spaces
      int[] output = new int[arr.Length]; //create in array of same length

      for(int i = 0; i < output.Length; i++)
      {
          output[i] = Int32.Parse(arr[i]); //parse every value and add to int array
      }
      return output;
    }
}

public class Calculator
{
    public int Add(params int[] numbers)
    {
        var sum = 0;
        foreach (var number in numbers)
        {
            sum += number;
        }
        return sum;
    }
}