подсказка по Производительности:
, Если необходимо связать большие строки, поместите строковые части в массив и используйте Array.Join()
метод для получения полной строки. Это может быть много раз быстрее для конкатенации большого количества строк.
нет никакого StringBuilder
в JavaScript.
Существуют конкретные реализации, включая (но не ограничиваясь ими):
В духе вашего вопроса, нет общей реализации, и, поскольку я не работаю в Microsoft, я могу только предполагать. Поскольку конкретная реализация настолько проста, как вы показали, я не буду предлагать никаких предположений (поскольку это, вероятно, было бы неверно).
Вот реализация, которую я придумал
public class LookupKeyedCollection<TKey, TItem> : KeyedCollection<TKey, TItem>
{
private Func<TItem, TKey> _getKeyFunc;
public LookupKeyedCollection(Func<TItem, TKey> getKeyFunc)
{
_getKeyFunc = getKeyFunc;
}
//Required KeyedCollection implementation
protected override TKey GetKeyForItem(TItem item)
{
return _getKeyFunc(item);
}
public bool TryGetItem(TKey key, out TItem item)
{
if (Dictionary == null)
{
item = default(TItem);
return false;
}
return Dictionary.TryGetValue(key, out item);
}
public void AddOrUpdate(TItem item)
{
Remove(_getKeyFunc(item));
Add(item);
}
public new bool Contains(TItem item)
{
return base.Contains(_getKeyFunc(item));
}
}
Обоснование методов можно в основном найти в следующем: