Второй создает новую переменную дескриптора.Если это локальная переменная, то, как говорит @dario_ramos, она неинициализирована, и ваша программа, скорее всего, вылетит, если вы попытаетесь использовать дескриптор перед его назначением.Если это переменная-член или глобальная переменная, то она будет nullptr
.
Первая аналогична, хотя ее можно использовать только для локальных или глобальных переменных (переменные-члены используют ctor-initializer *Синтаксис 1005 * в C ++ / CLI, как обычный C ++), и делает именно то, что вам запрещено делать.Он читает новый неинициализированный дескриптор и передает его конструктору System::String
.Если случайно конструктор завершает работу, дескриптор вновь созданного String
будет помещен в переменную как часть инициализации.Но поскольку конструктор пытается создать копию случайного мусора (если он локальный) или nullptr
(если глобальный), скорее всего, он просто рухнет.
Использовать значение - плохая идеялюбой переменной в своем собственном инициализаторе (иногда вам нужно использовать адрес, а не значение).