2015-09-02 105 views
-1

我有这样的代码在这里:ASP.NET - 隐式类型的局部变量必须初始化

var directories; 

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

但是定义变量,当我得到这个错误:

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

为什么我得到这个错误,我将如何去解决它?

回答

2

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

string[] directories; 

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

您不能在没有赋值的情况下使用var。这是决定var的类型的赋值。只需更改为声明特定类型,并且您应该很好。

0

编译器无法弄清楚directories是什么类型,因为你没有初始化它。

试试这个:

string[] directories; 
0

你应该明白,C#是强类型语言。所以编译器无法确定编译时的directories

var关键字是在编译时为anonymous type绑定引入的。因此,如果您不初始化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