C# 无法将int隐式转换为int[]

C# 无法将int隐式转换为int[],c#,casting,console-application,C#,Casting,Console Application,有一些解决方案,但没有一个对我有效。就我的问题而言,我正在构建多个阵列。以下是我遇到问题的变量和代码: static int numOfEmployees; static string[] nameArray; static int[] idArray, deptArray; static double[] payArray, hoursArray; static void InputEmployeeData() { int i; string[] w

有一些解决方案,但没有一个对我有效。就我的问题而言,我正在构建多个阵列。以下是我遇到问题的变量和代码:

static int      numOfEmployees;
static string[] nameArray;
static int[]    idArray, deptArray;
static double[] payArray, hoursArray;

static void InputEmployeeData()
{
    int      i;
    string[] words;

    numOfEmployees  = Int32.Parse(fileIn.ReadLine());
    idArray         = new int[numOfEmployees + 1];
    nameArray       = new string[numOfEmployees + 1];
    deptArray       = new int[numOfEmployees + 1];
    payArray        = new double[numOfEmployees + 1];
    hoursArray      = new double[numOfEmployees + 1];

    for (i = 1; i <= numOfEmployees; i++)
    { 
        words       = fileIn.ReadFields();
        idArray     = Int32.Parse(words[0]);
        nameArray   = words[1];
        deptArray   = Int32.Parse(words[2]);
        payArray    = Double.Parse(words[3]);
        hoursArray  = Double.Parse(words[4]);
    }
}
static-int-numOfEmployees;
静态字符串[]名称数组;
静态int[]i阵列,deptArray;
静态双[]工资阵列,小时阵列;
静态无效InputEmployeeData()
{
int i;
字符串[]个单词;
numOfEmployees=Int32.Parse(fileIn.ReadLine());
idArray=新整数[numOfEmployees+1];
nameArray=新字符串[numOfEmployees+1];
deptArray=newint[numOfEmployees+1];
payArray=新的双精度[numOfEmployees+1];
hoursArray=新的双精度[numOfEmployees+1];

对于(i=1;i这是因为您试图分配数组而不是分配其成员:

idArray     = Int32.Parse(words[0]);
应该是

idArray[i]  = Int32.Parse(words[0]);
依此类推。更好的做法是,创建一个
EmployeeData
类,该类具有用于
id
name
dept
等的单独字段,并使用它代替并行数组:

class EmployeeData {
    public int Id {get;}
    public string Name {get;}
    public int Dept {get;}
    public double Pay {get;}
    public double Hours {get;}
    public EmployeeData(int id, string name, int dept, double pay, double hours) {
        Id = id;
        Name = name;
        Dept = dept;
        Pay = pay;
        Hours = hours;
    }
}
现在,您可以创建
员工数据的数组或列表,并在读取员工信息时创建单个员工:

var employee = new EmployeeData[numOfEmployees];
// Index i starts from 0, not from 1
for (i = 0; i < numOfEmployees; i++) { 
    words       = fileIn.ReadFields();
    var id = Int32.Parse(words[0]);
    var name = words[1];
    var dept = Int32.Parse(words[2]);
    var pay = Double.Parse(words[3]);
    var hours = Double.Parse(words[4]);
    employee[i] = new EmployeeData(id, name, dept, pay, hours);
}
var employee=新员工数据[numofemployeedata];
//索引i从0开始,而不是从1开始
对于(i=0;i
您试图将int值分配给int数组。这会导致类型不匹配,从而导致编译器错误

您真正想要做的是索引到数组中,并在指定的索引处分配int

idArray[i] = int.Parse(words[0]);

你想通过这样做来实现什么?所有的
int[]
都是一个
int
数组,能够容纳多个
int
。我不明白为什么这个问题被否决得如此之多:很清楚OP想要实现什么,毫无疑问,他在让代码正常工作方面做出了很大的努力。