Если я определяю новый ref class
в C ++ / CLI, могу ли я затем использовать этот тип в качестве стандартного неуправляемого класса, и если да, то вообще ли ключевое слово ref
изменяет макет памяти типа данных?
В моем случае, есть класс, который используется повсеместно в очень очень большом приложении C ++.Мы назовем это MyExampleThing
:
class MyExampleThing
{
int a = 0;
int b = 1;
}
Мы рассматриваем возможность медленной интеграции большего числа компонентов .net framework в это приложение через C ++ / CLI.Если я перенесу этот класс на ref class
, продолжит ли он (при нормальных обстоятельствах) работать в другом старом неуправляемом коде C ++?Или я должен был бы оставить все как есть и написать ref class
оболочку для обработки .net interop?
Для ясности: я знаю, что не могу просто передать неуправляемый указатель в управляемый код, я просто спрашиваю, могу ли я использовать класс отдельно как либо управляемый или неуправляемый.
То же самое верно для value class
?
Также важно: если я могу создать ref class
es в неуправляемой куче, будет ли структура памяти такой же, как если бы это был обычный C ++учебный класс?(Неуправляемые версии этого класса сериализуются байт за байтом в виде двоичных данных. Да, я знаю о проблемах с порядком байтов при такой обработке, нет, я не принял это решение.)