Может кто-нибудь сказать мне, что означает этот сумасшедший оператор C ++ в C #? - PullRequest
2 голосов
/ 12 августа 2011

Во-первых, нет, я не студент ... просто парень на C #, портирующий библиотеку C ++.

Что означают эти две сумасшедшие строки?Чему они эквивалентны в C #?В основном меня интересуют size_t и sizeof.Не беспокоится о static_cast или assert .. Я знаю, как с ними справиться.

size_t Index = static_cast<size_t>((y - 1620) / 2);
assert(Index < sizeof(DeltaTTable)/sizeof(double));

y - это double, а DeltaTTable - double [].Заранее спасибо!

Ответы [ 3 ]

3 голосов
/ 12 августа 2011

size_t - это typedef для целого типа без знака. Он используется для размеров вещей и может иметь размер 32 или 64 бита. Конкретный размер size_t определяется реализацией, но это без знака .

Полагаю, в C # вы могли бы использовать 64-битный целочисленный тип без знака.

Все sizeof возвращает размер в байтах типа C ++. Каждый тип занимает определенное количество места, и sizeof возвращает этот размер.

То, что делает ваш код, вычисляет число двойных (64-битных операций с плавающей запятой), которое занимает DeltaTTable По сути, это гарантирует, что таблица больше некоторого размера на основе y, что бы это ни было.

В C # нет эквивалента sizeof, и в этом нет необходимости. У вас нет причин переносить этот код на C #.

3 голосов
/ 12 августа 2011

Плохие новости: сначала вы не можете сделать это в C #.Там нет статического приведения, только динамического приведения.Однако хорошие новости это не имеет значения.

Две строки кода утверждают, что индекс находится в границах таблицы, чтобы код не мог случайно прочитать какую-либо произвольную область памяти.CLR позаботится об этом за вас.Поэтому при портировании просто игнорируйте эти строки, они автоматически найдутся для вас любыми способами.

Конечно, это основано на предположении, основанном на шаблоне кода.Там нет информации о том, что представляет собой Y и как используется индекс

0 голосов
/ 12 августа 2011

sizeOf вычисляет, сколько памяти в байтах занимает тип DeltaTable.В c # AFAIK нет эквивалента для вычисления размера, подобного этому.

Я думаю, size_t - это тип struct в C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...