在 C# 中如何正确地将 int 数组传递给函数

Posted

技术标签:

【中文标题】在 C# 中如何正确地将 int 数组传递给函数【英文标题】:In C# How to correctly pass an int array to a function 【发布时间】:2022-01-06 11:51:42 【问题描述】:

如何将具有未知数量整数的数组传递给函数? 谁能告诉我我做错了什么?

尝试运行代码时出现以下错误:

错误 CS1501 方法“解决方案”没有重载需要 6 个参数

using System;

namespace IntegerTest

    class Program
    
        public static int Solution(int[] input)
        
            Array.Sort(input);

            int index = 0;

            // Skip negatives
            while (index < input.Length && input[index] < 1)
                index++;

            int expected = 1;
            while (index < input.Length)
            
                if (input[index] > expected)
                    return expected;

                // Skip number and all duplicates
                while (index < input.Length && input[index] == expected)
                    index++;

                expected++;
            

            return expected;
        

        public static void Main()
        
            Console.WriteLine(Solution( 1, 3, 6, 4, 1, 2));

        
    


    

【问题讨论】:

docs.microsoft.com/en-us/dotnet/csharp/programming-guide/arrays 您需要在数组前加上params 关键字才能接受可变参数样式输入;否则,传入一个 int 数组,你现在只是传入一堆独立的 int 【参考方案1】:

您可以使用数组参数调用函数(例如Solution(new[] 1, 3, 6, 4, 1, 2),或修改函数签名以采用params 参数(int Solution(params int[] input))。

【讨论】:

【参考方案2】:

你的方法接受int[],所以创建一个new int[]

Solution(new int[] 1, 3, 6, 4, 1, 2);

【讨论】:

【参考方案3】:

您将 6 个参数传递给一个接受一个的方法。将您的主要方法更改为以下内容:

    public static void Main()
    
        int[] arr =  1, 3, 6, 4, 1, 2;
        Console.WriteLine(Solution(arr));

    

【讨论】:

以上是关于在 C# 中如何正确地将 int 数组传递给函数的主要内容,如果未能解决你的问题,请参考以下文章

如何正确地将 numpy 数组传递给 Cython 函数?

如何正确地将浮点指针从 C 库传递到其 C# 包装器

如何正确地将这些转换为 c#,marshall,以便我可以将这些结构传递给 DLL (c++)?

Python 和 ctypes:如何正确地将“指针对指针”传递给 DLL?

如何正确地将指针传递给第 3 方代码的成员函数? [复制]

如何正确地将带有空格的$ string传递给grep