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

时间:2013-08-28 07:24:01

标签: c# .net

我正在阅读

上的隐式类型局部变量(var)

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

它说明了一个限制:

  

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

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

1 个答案:

答案 0 :(得分:12)

如果你这样做:

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

var myVar = 5;

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

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

此规则已插入,因为var在C#中没有保留关键字(但仍然不是......如果你看here,你会看到它&#39 ; sa" contextual keyword"),因此名为var的类/结构/枚举在C#2.0中有效。

  • 如果名为var的类型在范围中:如果有一个名为var的类/结构/枚举在范围内(所以"可达"只需写var,无需使用命名空间)

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