一般的なリスト(ここの他の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
orを使用して、そのオブジェクトを保持する 1 つの配列を使用することもできclass
ますが、教授は 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 行を超えるデータがある場合、範囲外のインデックス例外が発生するリスクがあります。これを回避する1つの方法は、上記のコードを、ターゲット配列の境界をチェックする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
私はコードをテストしていませんが、配列を使用する必要がある場合に役立つことを願っています。