ASP.NET - 必须初始化隐式类型的局部变量

时间:2015-09-02 19:59:06

标签: c# asp.net

我在这里有这段代码:

var directories;

if (filePath == "")
{
    directories = Directory.GetDirectories(filePath);
}
else
{
    directories = Directory.GetDirectories(myPath);
}

但是在定义变量时我得到了这个错误:

  

必须初始化隐式类型的局部变量

为什么我会收到此错误,我将如何修复它?

4 个答案:

答案 0 :(得分:2)

使用var时,编译器不知道directories的类型,除非您在声明它时进行初始化。如果您稍后要初始化,则必须声明类型。

string[] directories;

if (filePath == "")
{
    directories = Directory.GetDirectories(filePath);
}
//etc

答案 1 :(得分:0)

您无法在没有作业的情况下使用var。它是确定var类型的赋值。只需更改以声明特定类型,您应该很好。

答案 2 :(得分:0)

编译器无法确定directories的类型,因为您没有对其进行初始化。

试试这个:

string[] directories;

答案 3 :(得分:0)

你应该明白C#是强类型语言。因此,编译器无法确定编译时directories是什么。

在编译时为anonymous type绑定引入了

var关键字。因此,如果你没有初始化directories的值,那么编译器在运行时就不知道实际的类型(值或引用),并且var在图片中没有任何地方。

所以你可以试试

string[] directories;

if (filePath == "")
{
    directories = Directory.GetDirectories(filePath);
}

或者如果您只想使用var,那么您可以像这样使用它:

var directories = (string)null;

if (filePath == "")
{
    directories = Directory.GetDirectories(filePath);
}

您也可以参考MSDN了解详情:Implicitly Typed Local Variables