我有一个关于转换类型的愚蠢但令人费解的问题。从代码中可以看到,我有一个变量lprod_monthylReport,它取决于ytm值可以是List<Monthly_Report>或仅仅是Monthly_Report。在两种情况下,我都需要变量具有相同的名称。

var lprod_monthlyReport = new List<Monthly_Report>;

if (ytm == true)
{
   lprod_monthlyReport = _ProductRep.GetSpecificArchiveReport(prod.Prod_ID, lmonth, lyear, item.item_ID);
}
else
   lprod_monthlyReport = _ProductRep.GetSpecificYTMReport(prod.Prod_ID, item.item_ID);


问题是,如果我在每个if(或else)节中声明变量,则编译器会报错,因为它表示已在此上下文中声明了该变量。

我已经尝试过铸造

lprod_monthlyReport = (Monthly_Report) _ProductRep.GetSpecificArchiveReport(prod.Prod_ID, lmonth, lyear, item.Item_ID);


但这是行不通的。我也尝试了as关键字,但没有成功。

您能帮我这个吗?谢谢

弗朗切斯科

最佳答案

这应该工作:
如果您有Monthly_Report,只需将其添加到列表中...

    List<Monthly_Report> lprod_monthlyReport;
    if (ytm == true)
    {
       lprod_monthlyReport  = new List<Monthly_Report>();
       lprod_monthlyReport.add(_ProductRep.GetSpecificArchiveReport(prod.Prod_ID, lmonth, lyear, item.item_ID));
    }
    else{
       lprod_monthlyReport = _ProductRep.GetSpecificYTMReport(prod.Prod_ID, item.item_ID));
    }

09-20 11:48