var 与其他关键字有何不同?

How is var different than other keywords?

我刚刚发现您可以使用 var 作为字段名。

var var = "";

为什么这可能?任何其他关键字作为 fieldname 都不会编译。

var string = ""; // error

嗯,string 是一个 关键字

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/

我们不能使用它作为标识符:

// doesn't compile
var string = "";
// doesn't compile as well
int string = 123;

但是,我们可以把String(大写)标识符

var String = ""; 
string String = "";
String String = "";

相反,var不是关键字,它只是上下文关键字(即它是仅某些上下文);这就是为什么下面几行是正确的:

string var = "";
int var = 123;
var var = "";

除其他答案外,string 是该语言的关键字,您不能使用此名称声明变量。这也适用于其他关键字,如 intdoublecharevent 等。您可以使用 @ 转义此名称。例如:

var @string = "This is a string";
var @var = "This is a string declared named var";
var @int = 123;
var @double = 10.42;

而每次需要使用它时,都必须使用 @。例如:

Console.WriteLine(@string);

这不是一个好的习惯,避免对变量、对象、参数、方法等使用这种名称