0
Существует метод для чтения данных из файлаИнициализация массива в классе C#
public static void ReadData(out StudentMarks[] Students, out int amount)
{
amount = 0;
Students = new StudentMarks[Max];
using (StreamReader reader = new StreamReader("C:\\Users\\Andrius\\Desktop\\Mokslams\\C#\\Pratybos\\P3\\P3.2\\StudentsMarks.csv"))
{
reader.ReadLine(); reader.ReadLine();
string line = null;
int[] marks;
marks = new int[Max];
while (null != (line = reader.ReadLine()))
{
string[] values = line.Split(',');
string surname = values[0];
string name = values[1];
string group = values[2];
int amountOfMarks = int.Parse(values[3]);
int i = 0; int yMax = 3 + amountOfMarks;int yMin = 4;
while (amountOfMarks >= i)
{
if (yMin <= yMax)
{
marks[i] = int.Parse(values[yMin]);
yMin++;
}
i++;
}
StudentMarks MarksObj = new StudentMarks(surname, name, group, amountOfMarks, marks);
Students[amount++] = MarksObj;
}
}
}
Существует класс:
class StudentMarks
{
public const int Max = 50;
public string Surname { get; set; }
public string Name { get; set; }
public string Group { get; set; }
public int AmountOfMarks { get; set; }
public int[] Marks { get; set; }
public StudentMarks(string surname, string name, string group, int amountOfMarks, int[] marks)
{
Surname = surname;
Name = name;
Group = group;
AmountOfMarks = amountOfMarks;
Marks = marks;
}
}
Дело в том, что я не могу читать «Знаки», потому что я не знать, как инициализировать массив в классе. Мой метод должен работать нормально, я просто не могу поставить marks[i]
в Students[i].Marks[y]
Массивы довольно болезненны для изменения размера, как об использовании «Список». Затем просто вниз 'marks.Add (int.Parse (yValues [yMin])). Если вам действительно понадобится это как массив после этого, вы можете использовать Linq и do 'marks.ToArray()' –
не уверены, что я понимаю вашу проблему, но я вижу что-то пахнущее в ваших оценках Student ctor: вам нужны как «amountOfMarks», так и массив «отметки». В C# массив всегда несет свой размер: вы можете использовать myArray.Length, чтобы узнать, сколько элементов в массиве. Обратите внимание на разницу с массивом в C. В любом случае, как указывает @IanofOz, переходить со списком - это путь сюда. –
@IanofOz, ToArray() является функцией-членом списка: вам не нужна помощь Linq здесь! –