通用列表(如此处其他 2 个当前答案中使用的)是最好的方法。但是,如果您需要将数据保存在数组中(正如您之前的问题似乎表明的那样),那么您可以像这样修改教授的代码:
C#
int[] districtDataD = new int[900];
string[] districtDataG = new string[900];
string[] districtDataM = new string[900];
int[] districtDataA = new int[900];
int i = 0;
foreach (string line in File.ReadAllLines("census.txt"))
{
string[] parts = line.Split(',');
districtDataD[i] = int.Parse(parts[0]);
districtDataS[i] = parts[1];
districtDataM[i] = parts[2];
districtDataA[i] = int.Parse(parts[3]);
i++;
}
VB.NET(因为你原来的问题是用 VB.NET 标记的):
Dim districtDataD() As New Integer(900)
Dim districtDataS() As New String(900)
Dim distrcitDataM() As New String(900)
Dim districtDataA() As New Integer(900)
Dim i As Integer = 0
For Each Dim line As String In File.ReadAllLines("census.txt")
Dim string() As parts = line.Split(',')
districtDataD(i) = Integer.Parse(parts(0))
districtDataS(i) = parts(1)
districtDataM(i) = parts(2)
districtDataA(i) = Integer.Parse(parts(3))
i++
Next
您也可以使用struct
orclass
并拥有一个包含该对象的数组,但看起来您是教授希望您使用 4 个单独的数组。如果可以使用一个,则可以像这样简单地声明数组,例如:
C#
Person[] districtData = new Person[900];
VB.NET
Dim districtData() As New Person(900)
然后您可以在拆分逻辑中执行此操作(请注意,如果说 Distric 和 Age 是您的对象中的整数,您将必须转换或解析它们,如下所示):
C#
districtData[i] = new Person() { District = int.Parse(parts[0]), Gender = parts[1], MaritalStatus = parts[2], Age = int.Parse(parts[3]) };
VB.NET
districtData[i] = new Person() With { .District = Integer.Parse(parts[0]), .Gender = parts[1], .MaritalStatus = parts[2], .Age = Integer.Parse(parts[3]) }
这段代码有一个风险,如果你有超过 900 行数据,你会得到一个索引超出范围的异常。避免这种情况的一种方法是使用 while 循环修改我在上面放置的代码,该循环检查目标数组的边界或未超过的行数,如下所示:
C#
string[] lines = File.ReadAllLines("census.txt");
int i = 0;
while (i < 900 && i < parts.Length)
{
// split logic goes here
}
VB.NET
Dim lines As String() = File.ReadAllLines("census.txt")
Dim i As Integer = 0
While (i < 900 AndAlso i < lines.Length)
' split logic goes here
End While
我还没有测试过代码,但如果你必须使用数组,这希望能对你有所帮助。