【问题标题】:ASP.NET - Implicitly-typed local variables must be initializedASP.NET - 必须初始化隐式类型的局部变量
【发布时间】:2015-09-02 19:59:06
【问题描述】:

我这里有这段代码:

var directories;

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

但在定义变量时出现此错误:

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

为什么会出现这个错误,我该如何解决?

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      你不能在没有赋值的情况下使用 var。它是确定 var 类型的赋值。只需更改以声明特定类型即可。

      【讨论】:

        【解决方案3】:

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

        试试这个:

        string[] directories;
        

        【讨论】:

          【解决方案4】:

          您应该了解 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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多