【发布时间】:2010-08-04 18:41:48
【问题描述】:
在 C# 中,如何存储值的集合,所以如果我想稍后检索特定值,我可以执行以下操作:
myCollection["Area1"].AreaCount = 50;
或
count = myCollection["Area1"].AreaCount;
通用列表?
我想将多个属性存储到“密钥”中。上课就是答案吗?
【问题讨论】:
标签: c# collections
在 C# 中,如何存储值的集合,所以如果我想稍后检索特定值,我可以执行以下操作:
myCollection["Area1"].AreaCount = 50;
或
count = myCollection["Area1"].AreaCount;
通用列表?
我想将多个属性存储到“密钥”中。上课就是答案吗?
【问题讨论】:
标签: c# collections
您正在寻找Dictionary<string, YourClass> class。 (其中YourClass 有一个AreaCount 属性)
【讨论】:
编辑
根据您的评论,您似乎想要一个字典(如前所述),其中您的对象包含您的所有“值”。
例如:
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())时才能真正做到这一点。
SortedList 使用 IComparer 对 Key 值进行比较和排序,并以此方式排列列表。
Dictionary 存储一个 Key 和 Value,以便可以检索 KeyValuePair 对象。
HashTable 使用键和值,其中键必须实现 GetHashCode() 和 ObjectEquals
您需要的具体内容将根据您的具体要求而有所不同。
【讨论】:
此功能由indexers提供
【讨论】: