我在dateClose.closesing时遇到错误,“使用未分配的局部变量”。我在for循环外声明了dateClose,并在for循环内定义了值。如何在for循环外使用该值?
public class SMA
{
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average; <--- error
return dateClose;
}
}
答案 0 :(得分:1)
您只需执行
即可纠正错误Models.DateClose dateClose = null;
但是,您还想添加一个空检查,以确保如果队列中没有任何项目,则不会遇到空引用异常。
答案 1 :(得分:1)
您可以执行此操作。如果您的period
变量大于队列计数,则大于dateClose.Close将引发异常。
public Models.DateClose SMAMethod (Queue<Models.DateClose> queue, int period)
{
decimal average, sum=0;
Models.DateClose dateClose = null;
for (int i = 0; i < period; i++)
{
dateClose = queue.Dequeue();
if(dateClose != null)
sum += dateClose.Close;
}
average = sum/period;
dateClose.Close = average;
return dateClose;
}
为什么会出现此错误:
如果有该类,则无需初始化成员变量:
public class Test
{
private int temp; // this is okay.
..
}
但是,如果您有局部变量,则需要对其进行初始化:
public void Method()
{
int variabl;
sum += variable; // error.
}
因此,局部变量需要初始化,而成员变量不需要初始化。