【问题标题】:use of unassigned local variables in code在代码中使用未分配的局部变量
【发布时间】:2012-06-18 11:29:10
【问题描述】:

我已经声明了三个变量,即

TemplateData tData; TaskInstance tInstance;int tID;

在我的程序中。虽然我已经明确声明了它们,但我不断收到错误“使用未分配的局部变量” 我完全困惑为什么我的编译器会给出这个错误。

【问题讨论】:

  • 这并不是在抱怨您没有声明它们。它抱怨你没有分配给他们。
  • 正如错误所说,您没有分配任何值
  • 至于为什么编译器要求你分配它们,read this
  • 不客气 :)。如果问题解决,请接受解决方案..

标签: c# .net


【解决方案1】:

Compiler is absolutely correct。尽管您已经声明了它们,但编译器并没有告诉您“使用 未声明 局部变量”。它告诉你"Use of unassigned local variable"..

变量的声明和赋值是有区别的...

将值分配给变量。在你的代码中应该是

TemplateData tData = null;
TaskInstance tInstance = null;
int tID = 0;

TemplateData tData = new TemplateData();
TaskInstance tInstance = new TaskInstance();
int tID = 0;

【讨论】:

    【解决方案2】:

    您已声明它们,但您尚未为它们分配值。在使用这些变量之前,您至少必须分配一个值 null,否则您会将未定义的值传递给 ProcessInput

    【讨论】:

      【解决方案3】:

      您尚未为变量赋值。这就是编译器错误所说的。它说“使用未分配的局部变量”。请注意声明分配变量之间的区别。在使用它们之前,只需将它们全部设置为 null 或 0(或其他适当的默认值):

      TemplateData tData = null;
      TaskInstance tInstance = null;
      int tID = 0;
      

      编译器会抱怨,因为在使用变量之前没有为其分配一些值通常会导致错误。

      【讨论】:

        【解决方案4】:

        您需要在将这些值传递给方法之前对其进行初始化:

           TemplateData tData = new TemplateData();                 
           TaskInstance tInstance = new TaskInstance();                 
           int tID = 0; 
        

        【讨论】:

          【解决方案5】:

          只需初始化这些变量;

          TemplateData tData = null; TaskInstance tInstance = null; int tID = 0;
          

          【讨论】:

            【解决方案6】:

            当你声明变量时,你应该总是分配默认值或空值。

                        TemplateData tData = null;
                        TaskInstance tInstance = null;
                        int tID = 0;
            

            【讨论】:

              猜你喜欢
              • 2015-09-25
              • 1970-01-01
              • 2013-10-18
              • 2015-11-09
              • 2012-05-18
              • 1970-01-01
              • 2023-03-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多