限制适用于隐式类型的变量声明

Tan*_*ble 8 .net c#

我正在阅读关于Implicitly Typed Local Variables(var)的内容

http://msdn.microsoft.com/en-us/library/bb384061.aspx

它说明了一个限制:

如果名为var的类型在范围内,则var关键字将解析为该类型名称,并且不会被视为隐式类型的局部变量声明的一部分.

任何人都可以通过C#示例解释声明的含义吗?

xan*_*tos 12

如果你这样做:

class var
{
    public static implicit operator var(int value)
    {
        return new var();
    }
}

var myVar = 5;
Run Code Online (Sandbox Code Playgroud)

myVar会类型var,而不是类型int.

(在operator我已经添加是使得存在隐式转换从intvar).

插入此规则是因为var它不是C#中的保留关键字(但仍然不是......如果你看这里你会看到它是一个"上下文关键字"),所以命名的类/结构/枚举var在C#中是有效的2.0.

  • 如果名为var的类型在范围内:如果有一个名为var的类/结构/枚举在范围内(因此只需编写var就可以"访问",而不必使用命名空间)

  • 然后var关键字将解析为该类型名称:然后var表示"您的用户定义类型"而不是"关键字var"