не может использовать 'новый' на ссылочном типе; использовать 'gcnew' вместо этого? в VS 2005

Так как Вы явно попросили VB также, позвольте мне просто добавить, что этот дословный строковый синтаксис не существует в VB, только в C#. Скорее весь строки являются дословными в VB (за исключением того, что они не могут содержать разрывы строки, в отличие от C# дословно представляет в виде строки):

Dim path = "C:\My\Path"
Dim message = "She said, ""Hello, beautiful world."""

Escape-последовательности не существуют в VB (за исключением удвоения символа кавычки, как в C# дословно представляет в виде строки), который делает несколько вещей более сложными. Например, для написания следующего кода в VB необходимо использовать конкатенацию (или любой из других способов создать строку)

string x = "Foo\nbar";

В VB, который это было бы записано следующим образом:

Dim x = "Foo" & Environment.NewLine & "bar"

(& оператор объединения строк VB. + мог одинаково использоваться.)

7
задан hlovdal 25 August 2009 в 17:09
поделиться

1 ответ

Используемый вами язык называется C ++ / CLI , а не просто C ++. В C ++ / CLI вы можете получить доступ к таким материалам .NET, как DataTable . Семантика немного отличается от необработанных указателей:

DataTable^ myDataTable = gcnew DataTable;

« ^ » обозначает управляемый дескриптор . Под капотом это указатель на объект в куче сборщика мусора. Вы не можете выполнять арифметические операции с указателями для управляемых дескрипторов. Вы не можете удалить их вручную. GC позаботится о них. Также можно свободно перемещать объекты, если они не закреплены явно. gcnew используется для размещения объектов в управляемой куче. Он возвращает дескриптор, а не необработанный указатель. Вы не можете создавать ссылочные типы .NET в неуправляемой куче C ++, используя новый .

12
ответ дан 6 December 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: