参数数组是否可以是C#中列表的保留类型?

参数数组是否可以是C#中列表的保留类型?,c#,C#,params[]变量是否可以保存已通过C#中的方法作为参数传递的列表 编写了一个方法(AddIntegers),该方法要求将多个值作为参数。在方法的参数列表上,有一个params[]变量,当在Main方法中进行方法调用时,该变量正在接收抛出的值。但有一个例外是“无法从system.collections.generic.List转换为整数。有人知道为什么会发生这种情况吗?” **** this is within the Main Method**** strin

params[]变量是否可以保存已通过C#中的方法作为参数传递的列表

编写了一个方法(AddIntegers),该方法要求将多个值作为参数。在方法的参数列表上,有一个params[]变量,当在Main方法中进行方法调用时,该变量正在接收抛出的值。但有一个例外是“无法从system.collections.generic.List转换为整数。有人知道为什么会发生这种情况吗?”

       **** this is within the Main Method**** 
        string Demostring = Console.ReadLine();
        string[] tokens = Demostring.Split(',');
        List<int> nums = new List<int>();
        int oneNum;
        foreach(string s in tokens)
        {
            if (Int32.TryParse(s, out oneNum))
                nums.Add(oneNum);
        }

        int result1 = AddIntegers(nums);

        **** this is the method to be called****
        public static int AddIntegers(params int[] Restnum)
        {
            int result = 0;

            foreach(int temp in Restnum)
            {
                result += temp;
            }

             return result;
         }
****这在主方法****
string Demostring=Console.ReadLine();
string[]tokens=Demostring.Split(',');
List nums=新列表();
内在统一;
foreach(令牌中的字符串s)
{
if(Int32.TryParse(s,out-oneNum))
添加(合一);
}
int result1=加法器(nums);
****这是要调用的方法****
公共静态int AddIntegers(参数int[]Restnum)
{
int结果=0;
foreach(Restnum中的int-temp)
{
结果+=温度;
}
返回结果;
}
否,
列表
不是
int[]
,因此不能将其用作
int[]
参数的参数。(它是参数数组的事实不会改变这一点。)

通常,解决方法是使用两个重载—一个接受参数数组,另一个接受
IEnumerable

公共静态整数加法器(参数int[]数字)=>
加法器((IEnumerable)数);
公共静态整数加法器(IEnumerable number)
{
...
}
请注意,对于这个特定的示例,您当然可以调用
Sum
扩展方法从LINQ到对象


有人建议参数数组能够接受
IReadOnlyList
而不仅仅是
T[]
,但这在C中还没有实现。(我个人很喜欢它…

这是因为您试图在数组参数中插入一个列表

与此相反:

int result1=AddIntegers(nums);

您可以这样做:

int-result1=AddIntegers(nums.ToArray());

或者:

public static int AddIntegers(List<int> numbers)
{
     return AddIntegers(numbers.ToArray());
}

public static int AddIntegers(params int[] Restnum)
{
    int result = 0;

    foreach(int temp in Restnum)
    {
        result += temp;
    }

    return result;
}
公共静态整数加法器(列表编号)
{
返回addinteger(number.ToArray());
}
公共静态int AddIntegers(参数int[]Restnum)
{
int结果=0;
foreach(Restnum中的int-temp)
{
结果+=温度;
}
返回结果;
}
然后像平常一样调用它。

private void按钮4\u单击(对象发送者,事件参数e)
private void button4_Click(object sender, EventArgs e)
        {
            const string demostring = "1,2,3,4,5,6";
            var tokens = demostring.Split(',');
            var nums = new List<int>();
            foreach (var s in tokens)
                if (int.TryParse(s, out var oneNum))
                    nums.Add(oneNum);

            var result1 = AddIntegers(nums);
        }
        public static int AddIntegers(List<int> restnum)
        {
            var result = 0;

            foreach (var temp in restnum)
                result += temp;

            return result;
        }
{ 常量字符串demostring=“1,2,3,4,5,6”; var tokens=demostring.Split(','); var nums=新列表(); foreach(令牌中的var s) if(内锥虫(外锥虫) 添加(合一); var result1=加法器(nums); } 公共静态int AddIntegers(List restnum) { var结果=0; foreach(restnum中的变量temp) 结果+=温度; 返回结果; }
private void button4_Click(object sender, EventArgs e)
        {
            const string demostring = "1,2,3,4,5,6";
            var tokens = demostring.Split(',');
            var nums = new List<int>();
            foreach (var s in tokens)
                if (int.TryParse(s, out var oneNum))
                    nums.Add(oneNum);

            var result1 = AddIntegers(nums);
        }
        public static int AddIntegers(List<int> restnum)
        {
            var result = 0;

            foreach (var temp in restnum)
                result += temp;

            return result;
        }