Я начинаю с C# и получил следующий класс:
using System;
using System.Collections.Generic;
class PrefixMapSum : Dictionary<String, int> {
public bool insert(String key, int value) {
return base.TryAdd(key, value);
}
public int sum(String prefix) {
int sum = 0;
foreach (String key in base.Keys) {
if (key.StartsWith(prefix)) {
sum = sum + base[key];
}
}
return sum;
}
}
Теперь я хотел бы сократить следующую часть кода с помощью лямбда-выражений:
foreach (String key in base.Keys) {
if (key.StartsWith(prefix)) {
sum = sum + base[key];
}
}
Я пробовал с:
new List<String>(base.Keys).ForEach(key => key.StartsWith(prefix) ? sum = sum + base[key] : sum = sum);
И все же я сталкиваюсь с этой ошибкой: CS0201
Я прихожу с Java и не могу выяснить, почему это не работает. Может кто-нибудь объяснить, что я должен делать по-другому (и почему)?