VS2010将隐式变量显示为“var”类型而不是实际类型

时间:2012-05-06 17:43:01

标签: c# visual-studio-2010 c#-4.0 implicit-typing

我不确定这是一个错误还是别的什么。

我在VS2010中创建了一个新的Web应用程序项目。在项目中,我创建了一个新类(Class1),其中包含以下内容:

public void Test()
{
    var s = "Hello";
    Console.WriteLine(s);
}

当我将鼠标悬停在Console.WriteLine(s)行的s上时,会出现一个弹出窗口,显示(local variable) string s。很好,就像我期望的那样。

Correctly showing s to be of type string

现在,我向项目添加了一个App_Code文件夹。在其中,我再次创建一个新类(Class2),具有完全相同的内容(类名除外)。现在,当我将鼠标悬停在s时,会显示(local variable) var s

Incorrectly showing s to be of type var

为什么显示var代替string?这是一个错误吗?你能重现这种行为吗?

情况更糟。如果我将Class2.cs从App_Code文件夹移动到项目的根目录,VS2010仍然不显示该类型。即使重新启动VS2010并重新打开项目,VS2010也会在Class1中显示正确的类型,但不会在Class2中显示。我还尝试删除.suo.csproj.user文件,但仍然没有区别。显然,VS2010会在某处缓存此信息。

2 个答案:

答案 0 :(得分:0)

我认为这是由于App_Code文件夹而发生的。因为App_Code文件夹是在运行时编译的。正如MSDN在此描述的那样。

  

在网站项目中,您可以在App_Code中存储源代码   文件夹,它将在运行时自动编译。该   Web中的任何其他代码都可以访问生成的程序集   应用。因此,App_Code文件夹的工作方式与Bin非常相似   文件夹,除了你可以在其中存储源代码而不是   编译代码。 App_Code文件夹及其特殊状态   ASP.NET Web应用程序可以创建自定义类和   其他源代码专用文件,并在Web应用程序中使用它们   无需独立编译。

Here is MSDN link

答案 1 :(得分:0)

App_Code目录是Web站点项目的特殊目录。

在Web应用程序项目中,VS忽略放在App_Code目录中的代码。

将网站迁移到Web应用程序项目时

I noticed this behavior