универсальный список значения вводит с последовательным расположением и размером упаковки-> ОШИБКА?

Следующий код бросает ExecutionEngineException, когда я работаю, исполняемый файл сборки конечных версий (запустите EXE-файл). Действительно ли это - ошибка или является ею нормальное поведение?

оцените тип с размером упаковки = 1:

[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct RunLong
{
    public byte Count;
    public long Value;

    public RunLong(byte count, long value)
    {
        Count = count;
        Value = value;
    }
}

Используя структуру в универсальном Списке (T), добавляя значения и добираясь или устанавливая его свойство значения делает исполняемый катастрофический отказ, если это было создано в режиме выпуска. Катастрофический отказ не происходит, когда исполняемый файл создается в режиме отладки или при выполнении кода в отладчике Visual Studio (выпуск или режим отладки).

List<RunLong> runs = new List<RunLong>(1024);

for (int i = 0; i < 1000; i++)
{
    runs.Add(new RunLong(1, i));
}

RunLong last = runs[runs.Count - 1];

last.Count = (byte)(last.Count + 1);

 runs[runs.Count - 1] = last;

Кто-то может подтвердить это? Существует ли разумное объяснение?

Я запускаю VS 2010, .net 4, XP SP3 Победы

Заранее спасибо!

6
задан user410903 5 August 2010 в 07:37
поделиться