Разве Int64 не равно long в C #?

Я экспериментировал с SQL и базами данных на C # через SqlCeConnection . Я использовал ExecuteReader для чтения результатов и BigInt значений для идентификаторов записей, которые считываются в Longs.

Сегодня я играл с операторами SQL, которые используют операторы на основе COUNT (' SELECT COUNT (*) FROM X ') и использовал ExecuteScalar для чтения этих однозначных результатов.

Однако я столкнулся с проблемой. Кажется, я не могу хранить значения в типе данных Long, который я использовал до сих пор. Я могу хранить их в Int64.

Я использовал BigInt для идентификаторов записей, чтобы получить максимальное потенциальное количество записей.

BigInt 8 байт, следовательно, является Int64. Разве Long не равен Int64, поскольку оба являются 64-битными целыми числами со знаком?

Следовательно, почему я не могу преобразовать Int64 в Long?

long recordCount =0;

recordCount = (long)selectCommand.ExecuteScalar();

Ошибка:

Указанное преобразование недопустимо.

Я могу прочитать BigInt в Long. Это не проблема. Я не могу прочитать SQL COUNT в long.

COUNT возвращает Int (Int32), поэтому проблема на самом деле заключается в преобразовании Int32 в long.

29
задан Peter Mortensen 8 July 2015 в 11:10
поделиться