从书本中学习C#并陷入了这个问题:类,结构或接口成员声明中的无效令牌'int'。我正在尝试从方法返回数组。
using System;
using System.Collections.Generic;
namespace AdvanceMethodConcepts
{
class Program
{
public static void firstElementPrint(int[] a)
{
Console.WriteLine("The first element is {0}. \n", a[0]);
}
public static void printFirstListElement (List<int> a)
{
Console.WriteLine("The first list element is {0}\n", a[0]);
}
//this next line has the problem
public static void int[] ReturnUserInput()
{
int[] a = new int[3];
for (int i = 0; i < a.Length; i++)
{
Console.WriteLine("Enter an integer ");
a[i] = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Integer added to array.\n");
return a;
}
}
static void Main(string[] args)
{
int[] myArray = { 11, 2, 3, 4, 5 };
firstElementPrint(myArray);
List<int> myList = new List<int> { 1, 2, 3 };
printFirstListElement(myList);
int[] myArray2 = ReturnUserInput();
}
}
}
谢谢!
答案 0 :(得分:4)
为此:
public static void int[] ReturnUserInput()
并将其更改为此:
public static int[] ReturnUserInput()
void
是一个返回类型。这意味着“此函数不返回任何内容”。当您添加int[]
时,您的意思是“此函数不返回任何内容”,还表示“此函数返回一个整数数组”。这两件事相互矛盾,无论如何您只能使用一种返回类型。
当我在这里时,您需要在return
函数中移动ReturnUserInput()
语句,以便在循环后 出现。您还可以减少这一点:
public static void firstElementPrint(int[] a)
{
Console.WriteLine("The first element is {0}. \n", a[0]);
}
public static void printFirstListElement (List<int> a)
{
Console.WriteLine("The first list element is {0}\n", a[0]);
}
只有这样,您可以同时使用List<int>
和来调用int[]
:
public static void printFirstElement (IList<int> a)
{
Console.WriteLine("The first list element is {0}\n", a[0]);
}
或此,您可以使用任何类型的List或数组进行调用:
public static void printFirstElement<T>(IList<T> a)
{
Console.WriteLine("The first list element is {0}\n", a[0]);
}
通过在您碰巧遇到的任何项目上隐式调用ToString()
来起作用。
答案 1 :(得分:-1)
我观察到的是这句话
public static void int[] ReturnUserInput()
无效状态不返回任何内容,并且您保留了需要返回的整数数组。更改为:
public static int[] ReturnUserInput()
然后从for循环中删除return语句,并将其放在for循环之外