Ответ 1
Может быть, это поможет вам:
Я строю DLL, которая будет использоваться C++ с использованием COM.
Пожалуйста, дайте мне знать, что будет С# эквивалентом C++ 64-битного unsigned long long
.
Это будет тип ulong в С#? Пожалуйста, подтвердите.
Спасибо, Gagan
Может быть, это поможет вам:
Для всего, что выходит за рамки ulong
, вы также можете использовать структуру С# BigInteger
.
В C++ каждый целочисленный тип удваивает свой размер при работе на 64-разрядной машине, а не на 32-разрядной.
Следовательно, указание того, что С# int
или long
может быть эквивалентно C++ int
или long
, неверно.
Скорее, в С# есть тип с именем IntPtr
, который был создан исключительно для P/Invoke. Действительно, этот размер изменяет свой размер с 4 байтов на 32-битной машине до 8 байтов на 64-битной машине, и поэтому это правильный эквивалент C++ unsigned long
или Windows ULONG
.
Начиная с С++ 11, вы можете использовать их:
int8_t
int16_t
int32_t
int64_t
uint8_t
uint16_t
uint32_t
uint64_t
Их размер гарантированно останется неизменным независимо от всего.