Я пробовал создать литерал для HWND_BROADCAST ((HWND)0xffff)
, который сортируется как IntPtr
.Литералы IntPtr и UIntPtr
let [<Literal>] HWND_BROADCAST = 0xFFFFn
Visual Studio говорит мне: ошибка FS0267: Это не является допустимым постоянным выражением или пользовательские значения атрибута.
Очень хорошо. Затем я проверил documentation on F# Literals on MSDN, и я заметил, что в списке находится unativeint
(UIntPtr
). Я мог бы использовать это вместо IntPtr
. Но:
let [<Literal>] HWND_BROADCAST = 0xFFFFun
Такое же сообщение об ошибке.
Поэтому у меня есть два вопроса:
- Почему
nativeint
литералов не поддерживаются? Есть ли причина этого? - Почему нет
unativeint
литеральной работы, хотя MSDN говорит, что она должна?
Использование F # 3.1.2 (F # Interactive версия 12.0.30815.0) на Visual Studio 2013.
я заметил bigint
также в списке, который не работает либо. Поэтому я предполагаю, что MSDN ошибается.
Я вроде как понимаю. Но, тем не менее, это очень противоречиво, потому что тогда, очевидно, в списке отсутствует литеральное значение для 'nativeint'. –
Ах, правда, никогда не замечал этого. – scrwtp