在 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;