Вероятно, вопрос о типизации (в C++ с STL все будет сделано через std :: vector и не возникнет вопросов).C#: Как получить доступ к структурам в ArrayList?
У меня есть ArrayList, и я хотел бы сохранить там некоторые структуры. Как
struct txtRange
{
public String sText;
public String sTag;
public int iBeg;
public int iEnd;
};
ArrayList Ranges = new ArrayList();
txtRange iRange;
iRange.sText = entityText;
iRange.sTag = "";
iRange.iBeg = Ranges.Count > 0 ? Ranges[Ranges.Count - 1].iEnd + 1 : 0;
iRange.iEnd = iRange.iBeg + tmpstr.Length;
Ranges.Add(iRange);
На самом деле, у меня есть проблемы при доступе к Ranges [Ranges.Count - 1] .iEnd: 'объект' не содержит определения для 'iEnd'. Как должен быть создан ArrayList указанного типа?
Аналогичный вопрос (How to cast object/structure into arraylist?) заставил меня немного посмеяться ... Но все же есть объяснение, как добавить структуры в ArrayList, но не как получить значения оттуда.
«в C++ с STL все будет сделано через std :: vector, и вопросов не возникнет» - проверьте список (в System.Collections.Generic). Вы можете поместить в него структуры без кастингов, бокса и распаковки. Если вам действительно не нужна гетерогенная коллекция, это гораздо лучший выбор, чем ArrayList. –
itowlson