Я не знаю никаких хитростей, чтобы сказать компилятору, что вы хотите указать отрицательный шестнадцатеричный литерал, я не уверен, что это действительно возможно.Я считаю, что ваш единственный вариант - привести ulong
литерал к long
.Это должно быть сделано в непроверенном контексте.Это все еще значение, известное во время компиляции, поэтому фактический код приведения не будет сгенерирован.
long value = unchecked((long)0xFFFFFFFFFFFFFFFE);
// value == -2L
Обратите внимание, что в VB &HEFCDAB89
и &H98BADCFE
на самом деле Integer
литералы.Просто так случилось, что их повысили до Long
.Чтобы указать литерал Long
, необходимо включить суффикс L
.Таким образом, ваши назначения должны быть:
Dim a As Long = &HFFFFFFFFEFCDAB89L ' these are actually long literals now
Dim b As Long = &HFFFFFFFF98BADCFEL