[英]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,有兩種方法可以解決:
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++)
...
}
將數組傳遞給函數:
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.