C # Управляемый неуправляемый код - PullRequest
2 голосов
/ 23 мая 2011

Я пытаюсь понять управляемый / неуправляемый код, поскольку он относится к структурам и классам. У меня есть структура со свойством другой структуры, но это объявление указателя, как в:

struct StateInfo
{
   Bitboard board;
   StateInfo* previous;
}

Я конвертирую проект C ++ в C #. В любом случае, это не работает, потому что Bitboard - это класс. Ошибка, которую я получаю, связана с тем, что указатели не могут быть объявлены для управляемых типов. Если я возьму Bitboard из структуры, это нормально. Хотя мне это нужно, поэтому я изменил Bitboard с класса на структуру, и все хорошо. Я не уверен, что случилось? Есть идеи?

Ответы [ 3 ]

2 голосов
/ 23 мая 2011

Вы, вероятно, даже не хотите struct.Вместо этого:

class StateInfo
{
   Bitboard board;
   StateInfo previous;
}

В C # struct является типом значения.Например, int - это struct.Обычно их следует использовать для вещей, которые полностью описываются их стоимостью.

0 голосов
/ 23 мая 2011

Предлагаю вам прочитать о blitability .

Blittable типы имеют одинаковое двоичное представление в управляемом и неуправляемом коде, и вам нужно представлять их одинаково, если вы хотите, чтобы указатели имели смысл.

0 голосов
/ 23 мая 2011

По сути, в c # все объекты автоматически являются указателями и не нуждаются в освобождении.

Попробуйте прочитать некоторые переходные статьи о переходе с C ++ на C # C ++ -> C #: что вам нужноЗнайте, чтобы перейти от C ++ к C #

...