Егор: Если через x:Static — то не прокатит, это всё равно что просто задавать значение переменной в C# (типа Window.Title = MyResources.Tile). Что бы изменить язык, нужно либо перезапускать приложение, сохраняя выбранный вариант в настройках (самый простой и распространённый способ), либо использовать какие-нибудь ухищрения, коих достаточно много, так что приводить конкретный не буду — они легко гуглятся.
Что значит «если хотите знать сколько памяти будет использовать»?! Языка со сборщиком мусорщика или работающие в песочнице в плане количества памяти отличаются только дополнительным расходами на вспомогательные объекты (сюда же кеширование и т.д.). Так что размер памяти всегда N+M, где N — реальное количество занятой памяти, а M — количество памяти занятое компонентами виртуальной машины.
Исключением (надо же, каламбур какой :) являются функции/свойства, единственное назначение которых - это быть индикатором какого-то состояния (как правило, возвращаемый тип — bool).
Да, я рассматривал такое предположение. Но в данном случае ведь, вроде бы, scope — это тело текущего метода/теста (IsAliveAfterCollectionWork), а объекты, которые не собираются, создаются гораздо выше по цепочке вызовов и в самом методе никак не используются... Точнее, там используется только один объект, который и должен оставаться в живых, а на остальных есть только слабые ссылки. К тому же, при замене массива на IEnumerable вместо четырёх объектов (массив+тестируемый) остаются два (один объект из IEnumerable + тестируемый).
Хм. Странно. У меня в ReSharper'овском test runnner'е падает даже без дебага. Или он по-умолчнию использует debug и вы вырезали debug-версию, оставляя только release и затем запускали? Хотя в любом случае спасибо. Есть идея что это происходит из-за того, что в debug'е GC =вроде бы= оставляет переменные в живых до конца выполнения метода. Хотя когда я пробовал сделать всё через статические поля, то всё равно падало.