我不知道为什么这样说:
名称"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 转换为双精度的原因是值的第一部分00D
实际上是在 C# 中声明double
的一种方法。 有关详细信息,请参阅真实文字。因此,编译器将您的意图解释为:
public static int TimerBase = 0D; // LHS is int, RHS is double
所以你得到错误:
无法将类型
double
隐式转换为int
编译器希望在double
声明 (00D
( 之后看到一个;
,因此它还显示缺少分号的错误:
;预期
接下来,编译器会看到它试图解释为变量B9780
这就是您收到错误的原因:
"B9780"在当前上下文中不存在