Объявление шестнадцатеричного числа: имя «B9780» не существует в текущем контексте - PullRequest
0 голосов
/ 19 октября 2019

Я не знаю, почему это говорит:

Имя 'B9780' не существует в текущем контексте

У меня есть следующий код:

class Program
{
    public static int TimerBase = 00DB9780;
}

Я ожидаю, что он примет это, но там написано:

Невозможно неявно преобразовать тип double в int. Существует явное преобразование (вам не хватает приведения?)

1 Ответ

3 голосов
/ 19 октября 2019

00DB9780 представляется в шестнадцатеричном формате. Чтобы объявить в качестве префикса int значение с 0x:

public static int TimerBase = 0x00DB9780;
                          //  ^^ add 0x to start of hex numbers  

Префикс с 0x указывает компилятору ожидать (и анализировать) шестнадцатеричное число.


Объяснение ошибки (ошибок)

Причина, по которой компилятор не может преобразовать int в double, заключается в том, что первая часть значения 00D фактически является одним из способов объявления double в C #. См. Реальные литералы для получения дополнительной информации. Таким образом, компилятор интерпретирует ваше намерение как:

public static int TimerBase = 0D;  // LHS is int, RHS is double

Итак, вы получите ошибку:

не может неявно преобразовать тип double в int

Компилятор ожидает увидеть ; после объявления double (00D), поэтому он также показывает ошибку при отсутствии точки с запятой:

;Ожидается

Далее компилятор видит B9780, который он пытается интерпретировать как переменную, поэтому вы получаете ошибку:

'B9780' не существует втекущий контекст

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