在 switch 语句中使用变量会引发编译器错误
Using variables inside a switch statement throws and compiler error
尝试在开关内使用变量时遇到问题。它们是分配的变量 "outside" (开关),当我将它们作为参数传递时,它会抛出以下错误 "Use of an unassigned variable""
DateTime startDate, endDate;
switch (int.Parse(cmbRepor.SelectedValue.ToString()))
{
case 1:
startDate = new DateTime(anio, 1, 1);
endDate = new DateTime(anio, 3, 31);
break;
case 2:
startDate = new DateTime(anio, 4, 1);
endDate = new DateTime(anio, 6, 30);
break;
case 3:
startDate = new DateTime(anio, 7, 1);
endDate = new DateTime(anio, 9, 30);
break;
case 4:
startDate = new DateTime(anio, 10, 1);
endDate = new DateTime(anio, 12, 31);
break;
default:
break;
}
ReporteLogica logica = new ReporteLogica();
switch (int.Parse(cmbRepor.SelectedValue.ToString()))
{
case 1:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 2:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 3:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 4:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
default:
break;
}
问题是您没有在 switch 的 default-case 中赋值。那么如果none的条件符合的话,这个值应该是多少呢?它保持未初始化状态,由于您在运行时在程序中所做的任何限制,编译器甚至不知道这是否可能。为您的日期分配默认值:
DateTime startDate = DateTime.Now, endDate = DateTime.Now;
尝试在开关内使用变量时遇到问题。它们是分配的变量 "outside" (开关),当我将它们作为参数传递时,它会抛出以下错误 "Use of an unassigned variable""
DateTime startDate, endDate;
switch (int.Parse(cmbRepor.SelectedValue.ToString()))
{
case 1:
startDate = new DateTime(anio, 1, 1);
endDate = new DateTime(anio, 3, 31);
break;
case 2:
startDate = new DateTime(anio, 4, 1);
endDate = new DateTime(anio, 6, 30);
break;
case 3:
startDate = new DateTime(anio, 7, 1);
endDate = new DateTime(anio, 9, 30);
break;
case 4:
startDate = new DateTime(anio, 10, 1);
endDate = new DateTime(anio, 12, 31);
break;
default:
break;
}
ReporteLogica logica = new ReporteLogica();
switch (int.Parse(cmbRepor.SelectedValue.ToString()))
{
case 1:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 2:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 3:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
case 4:
dgvListado.DataSource = logica.GetReporteClientesCuentasInhabilitadas(startDate, endDate);
break;
default:
break;
}
问题是您没有在 switch 的 default-case 中赋值。那么如果none的条件符合的话,这个值应该是多少呢?它保持未初始化状态,由于您在运行时在程序中所做的任何限制,编译器甚至不知道这是否可能。为您的日期分配默认值:
DateTime startDate = DateTime.Now, endDate = DateTime.Now;