Чтобы уточнить: Джон предлагает, чтобы вместо массива строк вы объявляли такой класс:
class Event
{
public string Id { get; set; }
public float Start { get; set; }
public float End { get; set; }
public string Code { get; set; }
}
, а затем объявляли список следующим образом:
var events = new List<Event>();
, а затем добавьте в него свои данные следующим образом:
foreach (XmlNode node in myNodeList)
{
XmlNode id = node.FirstChild;
XmlNode start = id.NextSibling;
XmlNode end = start.NextSibling;
XmlNode code = end.NextSibling;
var event = new Event
{
Id = id,
Start = start,
End = end,
Code = code
};
events.Add(event);
}
Таким образом, вы получите хороший список строго типизированных объектов, с которыми легко работать, и вам не придется беспокоиться о них.увеличивая его, потому что List<T>
растет по мере добавления к нему материала.
Обратите внимание, что этот код не будет работать сразу после установки, компилятор сообщит об ошибке, потому что вы должны использовать свойство XmlNode.Value
впервое место, а затем, поскольку он возвращает строку, преобразуйте start
и end
в float
.Исправление оставлено как упражнение для вас.Вы должны выяснить, как конвертировать из string
в float
, Google поможет с этим.
После того, как вы узнали это, изучите LINQ to XML, что делает чтение XML-документов быстрым (хотя вам все равно придется выполнять некоторые преобразования типов вручную).
Кстати, я объявил эти два свойства как float
, но если по какой-то причине вы действительно действительно заботитесь о точности, вы должны объявить их какdecimal
.
Конечно, все благодарности Джону Скиту.
Приведенный выше код вообще не тестируется, попробуйте его и исправьте все необходимые исправления.