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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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