关于c#:限制适用于隐式类型的变量声明

Restrictions apply to implicitly-typed variable declarations

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

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

它声明了一个限制:

If a type named var is in scope, then the var keyword will resolve to that type name and will not be treated as part of an implicitly typed local variable declaration.

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


如果你这样做:

1
2
3
4
5
6
7
8
9
class var
{
    public static implicit operator var(int value)
    {
        return new var();
    }
}

var myVar = 5;

myVar的类型为var,而不是类型int

(我添加的operator是因为存在从intvar的隐式转换)。

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

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

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