Нет. GC.KeepAlive
на самом деле ничего не делает; его цель состоит в том, чтобы «обмануть» среду выполнения, чтобы предотвратить сбор мусора между объектом с момента запуска метода и до вызова GC.KeepAlive
.
Любой вызов метода будет поддерживать объект таким образом: вы можете передать его Console.WriteLine
, вызвать ToString
или даже ... GC.SuppressFinalize
.
(Или, как MSDN выражается:
Метод KeepAlive не выполняет никаких операций и не создает никаких побочных эффектов, кроме продления времени жизни объекта, передаваемого в качестве параметра.)