保持对象计数的最佳方法

时间:2017-03-08 01:29:07

标签: c# collections

我有一套物品(说它们都是不同种类的动物---熊,熊,狮子,老虎,熊)

维持每只动物的计数的最佳方法是什么?

我尝试使用Dictionary但“int”当然是只读的。

理想情况下,我想要动物[“熊”] = 2,动物[“狮子”] = 1,动物[“虎”] = 1等。

2 个答案:

答案 0 :(得分:2)

  

我尝试使用词典,但int当然是只读的。

作为值类型的

int不应该阻止您:当您将不可变对象用作需要更改的字典值时,只需通过重新分配它们就可以将其视为对待它的方式。 / p>

以下是如何在字典中增加计数的示例:

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);
}

答案 1 :(得分:0)

您可以尝试这样的事情

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());

您还可以制作动物集合或列表,并按其值类型计算。由于我不清楚你的班级是怎样的,我已经用字符串给出了例子。

相关问题