«Короткая короткая» версия состоит в том, что «класс ref» является управляемым классом. Нельзя иметь переменные-члены управляемого типа (объекты библиотеки .NET, такие как StringBuilder или TCPListener) в классе, который не объявлен как ref, то есть неуправляемые классы не могут содержать управляемые объекты.