声明十六进制数:名称"B9780"在当前上下文中不存在



我不知道为什么这样说:

名称"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"在当前上下文中不存在

最新更新