Поэтому я Отражатель-ки некоторый код фреймворки 2.0 и в конечном итоге со следующей деконструкциейПомощи перевода Отражатель деконструкция в компилируемый код
fixed (void* voidRef3 = ((void*) &_someMember))
{
...
}
Это не будет компилироваться из-за «The right hand side of a fixed statement assignment may not be a cast expression
»
Я понимаю что рефлектор может только приближаться и, как правило, я вижу четкий путь, но это немного вне моего опыта.
Вопрос: что рефлектор пытается описать мне?
Update:
Am также видит следующую
fixed (IntPtr* ptrRef3 = ((IntPtr*) &this._someMember))
Update:
Так что, как говорит Митч, он не является оператор побитового, а оператор AddressOf.
Вопрос теперь:
fixed (IntPtr* ptrRef3 = &_someMember)
терпит неудачу с 'Cannot implicitly convert type 'xxx*' to 'System.IntPtr*'. An explicit conversion exists (are you missing a cast?)
' ошибка компиляции.
Таким образом, я, казалось, был проклят, если бы сделал, и проклял, если я этого не сделаю. Есть идеи?
UPDATE:
Я думаю, что у меня есть это понял. Случайно я вернулся к выражению, которое с помощью void*
и удаляется слепки и VS перестал жаловаться и с тех пор я собрал из участников этого разговора void*
и intptr*
эквивалентны я просто сменил их, в результате чего в этом:
fixed (void* ptrRef3 = &_someMember)
и ВС прекратили жаловаться. Может кто-то проверить, что
fixed (void* ptrRef3 = &_someMember)
эквивалентно
fixed (IntPtr* ptrRef3 = &_someMember)
?
Mitch, меня больше интересует то, что кажется мне поразным оператором '&', который украшает _someMember. По-видимому, это синтаксис, с которым я не знаком. И, похоже, это сравнение, а не сравнение. Опять же, может быть, я что-то упустил. –
Это не побитовый оператор, когда он используется таким образом; это оператор «адреса» (тот же, что и в C и C++) –
Я подозревал, что так много. Поэтому позвольте мне подправить вопрос. Спасибо и извините за движущуюся цель. –