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

本文关键字:初始化 局部变量 类型 ASP | 更新日期: 2023-09-27 18:10:51

代码如下:

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

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

必须初始化隐式局部变量

为什么我得到这个错误,我该如何去修复它?

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

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

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

没有赋值就不能使用var。var的类型是由赋值决定的,只要声明一个特定的类型就可以了

编译器无法判断directories是什么类型,因为您没有初始化它。

试试这个:

string[] directories;

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

在编译时为匿名类型绑定引入了

var关键字。因此,如果您不初始化directories的值,它是未知的编译器,因为在运行时实际类型(值或引用)被采取,var不在图片中。

你可以输入

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

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

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

您也可以参考MSDN了解详细信息:隐式类型局部变量