为什么我可以创建一个名为“var”的类?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (18)

var在C#中不是关键字吗?但为什么我可以这样做:

public class var { }

public class main
{
    public static void main(string[] args)
    {
        var testVar = new var();
    }
}

var是在代码中使用的是var这是在之前声明的类main类。编译器甚至不抱怨。

当我这样做时:

public class int { }

或这个:

public class true { }

编译器表示int或者true是关键字,不能像那样使用。为什么它不一样var

提问于
用户回答回答于

var根据此列表不是关键字。

它是一个上下文关键字,因此从上下文中编译器可以决定哪个是您的类,哪个是上下文关键字,并且不会出现混淆。

一个上下文关键字是:

用于提供代码中的特定含义,但它不是C#中的保留字。

所以它没有保留,你可以使用它。

值得注意的是,由于关键字集是在C#1.0中决定的,因此没有添加,以保持向后兼容性。

用户回答回答于

编译器足够聪明,知道你var用作类名的上下文永远不是关键字的上下文,所以它允许它(这就是为什么它被定义为上下文关键字)。

扫码关注云+社区