C# 在C中作为参数传递数组#

C# 在C中作为参数传递数组#,c#,.net,C#,.net,我试图创建一个函数,它接受5个整数,将它们保存在一个数组中,然后将该数组传递回main。我已经和它搏斗了几个小时,读了一些MSDN文档,但它没有“点击”。有人能解释一下我做错了什么吗? 错误: 并非所有代码路径都返回一个值; 关于无效参数: 代码: 使用系统; 使用System.IO; 使用系统文本; 玛拉亚普酒店 { 班级计划 { 静态void Main() { int[]i=新的int[5]; 雷丁纳姆(一); 对于(int a=0;a

我试图创建一个函数,它接受5个整数,将它们保存在一个数组中,然后将该数组传递回main。我已经和它搏斗了几个小时,读了一些MSDN文档,但它没有“点击”。有人能解释一下我做错了什么吗? 错误: 并非所有代码路径都返回一个值; 关于无效参数:

代码:

使用系统;
使用System.IO;
使用系统文本;
玛拉亚普酒店
{
班级计划
{
静态void Main()
{
int[]i=新的int[5];
雷丁纳姆(一);
对于(int a=0;a<5;a++)
{
控制台。写入(a);
}
}
静态int-ReadInNum(int-readIn)
{
int[]readInn=新int[5];
对于(int i=0;i<5;i++)
{
Console.WriteLine(“请输入整数”);
readInn[i]=Console.Read();
}
}
}

}

您应该使用return语句完成函数,因为它的返回类型不是void。此外,您应该将返回类型更改为int[],因为您返回的是int数组,而不仅仅是一个int:

static int[] ReadInNum(int readIn)
{
    int[] readInn = new int[5];

    for (int i = 0; i < 5; i++)
    {
        Console.WriteLine("Please enter an interger");
        readInn[i] = Console.Read();
    }

    return readInn;
}
static int[]ReadInNum(int readIn)
{
int[]readInn=新int[5];
对于(int i=0;i<5;i++)
{
Console.WriteLine(“请输入整数”);
readInn[i]=Console.Read();
}
返回雷丁酒店;
}
您还应该更改main函数以获得函数ReadInNum的结果。在我看来,您并没有真正使用该参数,所以如果您没有特别注意,可以将其删除:

static void Main()
{
    int j;
    int[] i = ReadInNum(j);

    for (int a = 0; a < 5; a++)
    {
        Console.Write(a);
    }
}
static void Main()
{
int j;
int[]i=ReadInNum(j);
对于(int a=0;a<5;a++)
{
控制台。写入(a);
}
}

ReadInNum的参数是单个
int
,但您正在尝试传递数组。您必须使参数与您试图传入的参数匹配。例如:

static void ReadInNum(int[] readIn)
{
    for (int i = 0; i < readIn.Length; i++)
    {
        Console.WriteLine("Please enter an interger");
        readIn[i] = int.Parse(Console.ReadLine());
    }
}

将数组传递给函数:

class Program
{
    static void Main()
    {
        int[] i = new int[5];
        ReadInNum(i);

        for (int a = 0; a < 5; a++)
        {
            Console.Write(a);
        }
    }

    static int[] ReadInNum(int[] readIn)
    {
        for (int i = 0; i < readIn.Length; i++)
        {
            Console.WriteLine("Please enter an interger");
            readInn[i] = Console.Read();
        }

        return readIn;
    }
}
类程序
{
静态void Main()
{
int[]i=新的int[5];
雷丁纳姆(一);
对于(int a=0;a<5;a++)
{
控制台。写入(a);
}
}
静态int[]ReadInNum(int[]readIn)
{
for(int i=0;i

注意我是如何从ReadInNum返回一个
int[]
的。这是不必要的,但它使代码更具可读性,因为您计划更改readIn的情况并不明显。

要总结一下zome aswer,有两种方法:

1.将数组传递到方法中
static void Main()
{
int[]i=新的int[5];
雷丁纳姆(一);
对于(int a=0;a<5;a++)
{
控制台。写(i[a]);/!
}
}
静态int ReadInNum(int[]readIn)
{
对于(int i=0;i
2.返回一个数组
static void Main()
{
//int[]i=新的int[5];
int[]i=ReadInNum(5);
对于(int a=0;a
谢谢,这是完整的防错代码。感谢您提前考虑并添加解析和主语句。
static int[] ReadInNum(int count)
{
    int[] values = new int[count];
    for (int i = 0; i < count; i++)
    {
        Console.WriteLine("Please enter an interger");
        values[i] = int.Parse(Console.ReadLine());
    }
    return values;
}
int[] input = ReadInNum(5);
for (int a = 0; a < 5; a++)
{
    Console.Write(input[a]);
}
class Program
{
    static void Main()
    {
        int[] i = new int[5];
        ReadInNum(i);

        for (int a = 0; a < 5; a++)
        {
            Console.Write(a);
        }
    }

    static int[] ReadInNum(int[] readIn)
    {
        for (int i = 0; i < readIn.Length; i++)
        {
            Console.WriteLine("Please enter an interger");
            readInn[i] = Console.Read();
        }

        return readIn;
    }
}
static void Main()
{
    int[] i = new int[5];
    ReadInNum(i);

    for (int a = 0; a < 5; a++)
    {
        Console.Write(i[a]);  // !
    }
}

static int ReadInNum(int[] readIn)
{
      for (int i = 0; i < rreadIn.Length; i++)
           ...
}
static void Main()
{
    // int[] i = new int[5];
    int[] i = ReadInNum(5);

    for (int a = 0; a < i.Length; a++)
    {
        Console.Write(i[a]);  // !
    }
}

static int[] ReadInNum(int size)
{
      int[] readIn  = new int[size];

      for (int i = 0; i < readIn.Length; i++)
           ...
}