Изменение встроенного -в коллекции.NET int.MaxValue раз и более -потенциальная ошибка переполнения

Когда-то, когда.NET Reflector был бесплатным, я использовал его, чтобы погрузиться в код.NET framework. Я обратил внимание, что большинство коллекций в.NET 2.0 (Я считаю, что это применимо и к текущим версиям )используют следующий механизм для распознавания модификаций коллекций во время циклов:

public class SomeCollection<T>
{
    internal int version = 0;

    // code skipped for brevity

    public void Add(T item)
    {
        version++;

        // add item logic...
    }

    public IEnumerator<T> GetEnumerator()
    {
         return new SomeCollectionEnumerator<T>(this);
    }
}

public class SomeCollectionEnumerator<T> : IEnumerator<T>
{
     private SomeCollection<T> collection;
     private int version;

     public SomeCollectionEnumerator(SomeCollection<T> collection)
     {
         this.version = collection.version;
         this.collection = collection;
     }

     public bool MoveNext()
     {
         if (this.version != this.collection.version)
         {
             // collection was modified while iterated over
             throw SomeException(...);
         }
         // iteration logic here...
     }
}

Теперь представьте гипотетический случай долго работающего приложения (интенсивно используемого веб-сервиса, который должен иметь минимальное время простоя и должен быть стабильным и надежным ), который хранит заданный экземпляр коллекции (один из встроенных -в коллекцию типы в.NET framework )в памяти до тех пор, пока он работает. Коллекция модифицируется достаточно часто, так что модификации int.MaxValueвозможны.Существует ли риск того, что строка version++в каждом методе модификации коллекции вызовет исключение переполнения (, предполагая, что проверки переполнения не отключены глобально ).

Я должен признать, что плохо помню детали отраженного кода, но я не помню использования unckeckedблоков вокруг version++операций. Означает ли это, что встроенные -типы коллекций в.NET не подходят для такого долгого -времени работы приложения? Просто из любопытства, сталкивался ли кто-нибудь с реальным -жизненным сценарием, где это могло произойти на самом деле?

5
задан Ivaylo Slavov 2 April 2014 в 09:21
поделиться