我有一组对象(假设它们都是不同种类的动物---熊,熊,狮子,老虎,熊)
维持每只动物的计数的最佳方法是什么?
我尝试使用字典,但" int"当然是只读的。
理想情况下,我想要动物["熊"] = 2,动物["狮子"] = 1,动物[" tiger"] = 1等。
我尝试使用字典,但
int
当然是只读的。
int
是一种值类型,不应阻止您:您只需要按照不变的对象作为需要更改的字典值来对待它,即通过重新分配它们。
这是如何在字典中增加计数的示例:
var counts = new Dictionary<Animal,int>();
Animal someAnimal = ... // Get some animal
int currentCount;
if (counts.TryGetValue(someAnimal, out currentCount)) {
counts[someAnimal] = currentCount+1;
} else {
counts.Add(someAnimal, 1);
}
您可以尝试这样的东西
string[] animals = new string[] { "Bear", "Bear", "Lion", "Tiger", "Bear" };
var groups = animals.GroupBy(v => v);
foreach(var group in groups)
Console.WriteLine("[{0}] = {1}", group.Key, group.Count());
您还可以制作动物的收集或列表,并通过其价值类型获得计数。由于尚不清楚您的班级看起来像我在字符串中给出了示例。