using System;
|
using System.Collections.Generic;
|
|
namespace FastJSON
|
{
|
public sealed class SafeDictionary<TKey, TValue>
|
{
|
private readonly object _Padlock = new object();
|
private readonly Dictionary<TKey, TValue> _Dictionary;
|
|
public SafeDictionary(int capacity)
|
{
|
_Dictionary = new Dictionary<TKey, TValue>(capacity);
|
}
|
|
public SafeDictionary()
|
{
|
_Dictionary = new Dictionary<TKey, TValue>();
|
}
|
|
public bool TryGetValue(TKey key, out TValue value)
|
{
|
lock (_Padlock)
|
return _Dictionary.TryGetValue(key, out value);
|
}
|
|
public int Count { get { lock (_Padlock) return _Dictionary.Count; } }
|
|
public TValue this[TKey key]
|
{
|
get
|
{
|
lock (_Padlock)
|
return _Dictionary[key];
|
}
|
set
|
{
|
lock (_Padlock)
|
_Dictionary[key] = value;
|
}
|
}
|
|
public void Add(TKey key, TValue value)
|
{
|
lock (_Padlock)
|
{
|
if (_Dictionary.ContainsKey(key) == false)
|
_Dictionary.Add(key, value);
|
}
|
}
|
}
|
}
|