WeakHandle .NET Core против .NET FrameworkC#

Место общения программистов C#
Anonymous
WeakHandle .NET Core против .NET Framework

Сообщение Anonymous »

Экспериментируя с WeakHandles, я столкнулся с этой особенностью в .NET 6.

Код: Выделить всё

static void Main(string[] args) {
var foo = new int[3];
var fooWeakHandle = GCHandle.Alloc(foo, GCHandleType.Weak);
GC.Collect();
Console.WriteLine(fooWeakHandle.Target);
}
Результат с .NET 6 (скомпилированный в режиме Release, чтобы избежать нетерпеливого сбора корней) оказался неожиданным

Код: Выделить всё

System.Int32[]
В .NET Framework 4.7.2 это значение null/nothing в Release и System.Int32[] в Debug.
Я получил те же результаты с LinqPad (оптимизировать+-) для Framework и .NET(Core).
Почему не собирается массив, на который ссылается только WeakHandle?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -framework

Вернуться в «C#»