将字符串数组传递给函数?

时间:2017-12-06 16:05:21

标签: c#

我不确定我做错了什么。我试图将数组人员传递给函数getInformation并让它如此东西(最终它会询问人员及其工资的名称,但我似乎无法获得将数组作为数据的函数参数?

using System;

class SalesPeeps {

    string[] people = new string[8];
    double[] salaries = new double[8];

    static void Main() {

        getInformation(people);

    }

    static void getInformation(string[] arr) {

        int i = 0;

        do {

            Console.WriteLine("Please input a the sales person's last name.");
            i++;

        } while (i < people.Length);

    }
}

3 个答案:

答案 0 :(得分:0)

您无法从静态方法people访问非静态字段Main。将其声明更改为:

static string[] people = new string[8];

答案 1 :(得分:0)

您的两个变量都是类成员,这意味着它们是您可以从SalesPeeps类创建的对象的变量。

您的方法getInformation()是一个静态方法,因此只接受静态输入。

对此的修复是使两个变量都是静态的。阅读更多here

无论哪种方式,您都应该从编译器收到错误消息,因为这个主题有很多资源,所以不需要这个问题。只需在IDE中检查编译器错误并进行谷歌搜索。

答案 2 :(得分:0)

1)string[] people = new string[8]; 是一个字段 - 而不是局部变量。所以当你说人 - 你实际上是指这个人。但是在静态方法中没有这个。 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members

2)getInformation方法使用 arr 数组作为参数但不引用它。您可以使用人员并将其设置为静态,这也可以解决第1点的问题。

我认为这可以通过这种方式纠正:

class SalesPeeps
{

    static string[] people = new string[8];
    static double[] salaries = new double[8];

    static void Main()
    {
        getInformation();
    }

    static void getInformation()
    {
        int i = 0;
        do
        {

            Console.WriteLine("Please input a the sales person's last name.");
            i++;

        } while (i < people.Length);

    }
}