Здравствуйте, hi_octane, Вы писали:
_>У тебя два класса. Один элемент структурой оборачивать надо.
Кстати, если сочинить такой сам себе итератор:
internal struct Single<T> : IEnumerable<T>, IEnumerator<T>
{
private readonly T _value;
private bool _isEnumerated ;
public Single(T value)
{
_value = value;
_isEnumerated = false;
}
public IEnumerator<T> GetEnumerator()
{
Reset();
return this;
}
IEnumerator IEnumerable.GetEnumerator()
{
Reset();
return this;
}
public T Current
{
get { return _isEnumerated ? _value : default(T); }
}
object IEnumerator.Current
{
get { return Current; }
}
public bool MoveNext()
{
if (_isEnumerated)
{
return false;
}
else
{
_isEnumerated = true;
return true;
}
}
public void Reset()
{
_isEnumerated = false;
}
public void Dispose() { }
}
то я получаю такой результат:
Time: 608, Memory GC: 1301792, Memory WS: 2473984
Т.е. большая нагрузка на кучу сохраняется.
Получается объект всё равно в кучке создается или просто при приведении к интерфейсу всё равно боксинг происходит?
Даже самую простую задачу можно сделать невыполнимой, если провести достаточное количество совещаний