public T this[int index] { get { if (index >= _internList.Count) { return(default(T)); } T result; return(_internList[index].TryGetTarget(out result) ? result : default(T)); } set { // ReSharper disable once LoopVariableIsNeverChangedInsideLoop while (_internList.Count <= index) { _internList.Add(new WeakReference <T>(default(T))); } ApplicationCache.Cache(value); _internList[index] = new WeakReference <T>(value); } }