类中的C#无效令牌'int'

时间:2018-12-04 02:58:53

标签: c# .net

从书本中学习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();

        }
    }
}

谢谢!

2 个答案:

答案 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循环之外