根据开关设置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 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();
}