根据开关设置var

本文关键字:var 设置 开关 | 更新日期: 2023-09-27 18:22:13

我需要能够根据switch语句更改对象的类型。我希望发生的逻辑如下:

    var orig;
    switch(ID)
    {
        case 1:
          orig = (List<ReportOne>)Session["Report"];
          break;
        case 2:
          orig = (List<ReportTwo>)Session["Report"];
          break;
    }

    var sort = from o in orig
               where o.ID == ReportID
               select o;
Session["SortedReport"] = sort.ToList();

但当我尝试这样做时,我得到了必须初始化的隐式类型局部变量。有没有一种方法可以获得与上述逻辑相同的功能。

根据开关设置var

您不能为此使用Var。编译器必须知道Var是什么类型的对象。

您可以使用的是一个接口或基类。

如果为两个类或同一个基类分配接口,则可以替换

 var orig

带有

 IEnumerable<baseClass> orig

 IEnumerable<iClass> orig

如果您需要List功能,则可以转换IEnumerable.ToList()来实现该功能。

如果向报表添加父界面:

IEnumerable<IReport> orig = Session["Report"] as IEnumerable<IReport>;
if (orig != null)
{
  var sort = from o in orig
             where o.ID == ReportID
             select o;
  Session["SortedReport"] = sort.ToList();
}