EDIT На основании вашего комментария создается впечатление, что вам нужен словарь (как уже предлагалось), в котором ваш объект содержит все ваши «значения».
Для экземпляра:
public class MyClass
{
public int AreaCount;
public string foo;
public bool bar;
}
//Create dictionary to hold, and a loop to make, objects:
Dictionary<string, MyClass> myDict = new Dictionary<string, MyClass>();
while(condition)
{
string name = getName(); //To generate the string keys you want
MyClass mC = new MyClass();
myDict.Add(name, mC);
}
//pull out yours and modify AreaCount
myDict["Area1"].Value.AreaCount = 50;
В качестве альтернативы вы можете добавитьstring
«Имя» для вашего класса (я использую поля для примера, вы, вероятно, будете использовать свойства) и используйте Linq:
//Now we have a list just of your class (assume we've already got it)
myClass instanceToChange = (from items in myList
where Name == "Area1"
select item).FirstOrDefault();
myClass.AreaCount = 50;
Это помогает больше?
ОРИГИНАЛЬНЫЙ ОТВЕТ Я не совсем уверен, что вы спрашиваете, но я дам его назад.
Учитывая список объектов, из которых вам нужно захватить конкретный объект, есть (как правило) 4 способа - в зависимостив соответствии с вашими потребностями.
Generic List<T>
действительно делает это хорошо только в том случае, если ваш объект уже поддерживает какой-либо вид поиска (например, String.Contains ()).
A SortedList использует IComparer для сравнения и сортировки значений Key и упорядочения списка таким образом.
A Словарь хранит Key и Value, чтобы можно было извлечь объекты KeyValuePair
.
A HashTable использует Ключи и Значения, где Ключи должны реализовывать GetHashCode()
и ObjectEquals
Конкретный вам нужен будет варьироваться в зависимости от ваших конкретных требований.