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想要实现什么,毫无疑问,他在让代码正常工作方面做出了很大的努力。