我不确定我做错了什么。我试图将数组人员传递给函数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);
}
}
答案 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);
}
}