我不知道为什么这样说:
名称“ B9780”在当前上下文中不存在
我有以下代码:
class Program
{
public static int TimerBase = 00DB9780;
}
我希望它接受,但是它说:
无法将类型
double
隐式转换为int
。存在显式转换(您是否缺少演员表?)
00DB9780
表示为十六进制。将int
声明为0x
前缀:
public static int TimerBase = 0x00DB9780;
// ^^ add 0x to start of hex numbers
0x
的前缀告诉编译器期望并解析一个十六进制数。
编译器说无法将int转换为double的原因是值00D
的第一部分实际上是在C#中声明double
的一种方法。有关更多信息,请参见this link。所以它认为您正在尝试这样做:
public static int TimerBase = 0D; // LHS is int, RHS is double
所以您得到错误:
无法将类型
double
隐式转换为int
编译器希望在;
声明(double
)之后看到00D
,因此也会因缺少分号而引发错误:
;预期
接下来,编译器将看到B9780
,它将尝试将其解释为变量,这就是您收到错误的原因:
'B9780'在当前上下文中不存在