> -- Vlad писал(а):
> Опять подтасовываем результаты? Здесь меряется скорость "GC vs стэк".
Ну что Вы, ни в коем случае. Сравнение честное. В языке C#, struct - является value-типом. А следующий синтаксис объявления и инициализации:
## Код:
```
Data b = new Data();
```

похож на синтаксис объявления и создания reference-типа для "однообразия" - так решили разработчики языка. Таким образом, в данном случае new Data() - это не создание объекта типа Data в динамической памяти, а размещение соответствующего количества нулей в переменной b находящейся на стеке. Просто синтаксис такой.

> -- Vlad писал(а):
> Кстати, хотелось бы узнать хоть один осмысленный пример существования такой структуры с мусором внутри.
Не понимаю о каком ещё мусоре Вы говорите.

> -- Vlad писал(а):
> В обероне нельзя создавать и возвращать из функций структуры (только передавать по ссылке и инитить)?
Да, в оберонах процедура-функция может возвращать только переменные базовых типов (в т.ч. указатели). Ввод и вывод переменных комплексных типов данных делается посредством VAR, IN, OUT ссылок.

> -- Alexey Veselovsky писал(а):
> А не корректней ли тут делать просто "Data b;" вместо "Data b = new Data()"?
Это невозможно. Ведь переменная b не только объявляется, но и используется. А перед использованием, переменная b должна быть проинициализирована - таково требование языка C#. Если написать так как предлагаете Вы, то программа не скомпилируется.