首页 > 解决方案 > 声明十六进制数:当前上下文中不存在名称“B9780”

问题描述

我不知道为什么会这样说:

当前上下文中不存在名称“B9780”

我有以下代码:

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

我希望它接受这一点,但它说:

无法将类型隐式转换doubleint. 存在显式转换(您是否缺少演员表?)

标签: c#hex

解决方案


00DB9780表示为十六进制。将值声明为int前缀0x

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

前缀 with0x告诉编译器期望(并解析)一个十六进制数。


错误说明

编译器说不能将 int 转换为 double 的原因是值的第一部分00D实际上是double在 C# 中声明 a 的一种方法。有关详细信息,请参阅真实文字。因此编译器将您的意图解释为:

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

所以你得到错误:

不能将类型隐式转换doubleint

编译器希望在声明 ( );之后看到 a,因此它还会显示缺少分号的错误:double00D

; 预期的

接下来,编译器会看到B9780它试图将其解释为变量,这就是您收到错误的原因:

当前上下文中不存在“B9780”


推荐阅读