不是var
C#中的关键字?但为什么我这样做:
public class var { }
public class main
{
public static void main(string[] args)
{
var testVar = new var();
}
}
Run Code Online (Sandbox Code Playgroud)
该var
是在代码中使用的是var
这是在之前声明的类main
类.编译器甚至没有抱怨.
当我这样做时:
public class int { }
Run Code Online (Sandbox Code Playgroud)
或这个:
public class true { }
Run Code Online (Sandbox Code Playgroud)
编译器说int
或者true
是关键字,不能像那样使用.为什么不一样var
?
Sam*_*der 101
var
根据此列表不是关键字.
它是一个上下文关键字,因此从上下文中,编译器能够决定哪个是您的类,哪个是上下文关键字,并且不会产生混淆.
上下文关键字是:
用于在代码中提供特定含义,但它不是C#中的保留字.
所以它没有保留,你可以使用它.
正如上面的评论中所指出的那样,在Eric Lipperts博客上讨论了差异以及在每个c#版本中添加的各种关键字和上下文关键字的列表
值得注意的是,由于在C#1.0中确定了关键字集,因此没有添加,以便保持向后兼容性.
Pol*_*fun 12
另一种看待这种情况的方式:作为关键字的"var"不在C#的第一个版本中(与"int"和"true"不同),所以你可能编写了一些代码,其中有一个名为"var"的类.这非常好,合法.然后,当"var"被添加到语言中时,设计师非常善良,只能在某些上下文中使其成为关键字,因此您现有的var类仍然可以工作.
这是语言设计的真正挑战之一 - 如何在不破坏现有代码的情况下添加新功能,并且不会使新功能使用起来很麻烦.
归档时间: |
|
查看次数: |
3005 次 |
最近记录: |