簡體   English   中英

在C#中將數組作為參數傳遞

[英]Passing Arrays as Parameters in C#

我正在嘗試創建一個接受5個整數的函數,將它們保存在一個數組中,然后將該數組傳遞回主函數。 我已經花了幾個小時與它搏斗,並閱讀了一些MSDN文檔,但是還沒有“點擊”它。 有人可以告訴我我做錯了什么嗎? 錯誤:並非所有代碼路徑都返回值; 關於無效參數的一些信息:

碼:

using System;
using System.IO;
using System.Text;

namespace ANumArrayAPP
{
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)
    {
        int[] readInn = new int[5];

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

}

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());
    }
}

這將填充您傳遞給方法的數組。 另一種選擇是傳入所需的整數,然后方法中返回數組:

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

您可以像這樣從Main調用它:

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

您應該使用return語句完成函數,因為其返回類型不是void。 另外,您應該將返回類型更改為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;
}

您還應該更改主函數,以便獲得函數ReadInNum的結果。 在我看來,如果您沒有特別注意,您實際上並沒有真正使用該參數,因此可以將其刪除:

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

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

在這里總結zome aswer,有兩種方法可以解決:

1.將數組傳遞給方法

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++)
           ...
}

2.返回一個數組

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++)
           ...
}

將數組傳遞給函數:

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

請注意,我是如何從ReadInNum返回int[] 這不是必需的,但是它使代碼更具可讀性,因為您計划更改readIn並不明顯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM