将object类型的空列表设置为返回object类型IEnumerable的函数
本文关键字:类型 object 返回 IEnumerable 函数 列表 设置 | 更新日期: 2023-09-27 17:53:33
在我的BLL中,我需要首先声明一个空列表,然后最终在稍后的代码中使用返回类型IEnumerable的DAL函数设置它。
这是正确的方式做这样的事情吗?
IEnumerable<productList> productList = new List<Product>();
productList = DAL.GetProducts();
通常我只做以下操作,但上面的场景不同:
IEnumerable<productList> productList = DAL.GeytProducts();
只是为了清除任何混乱,这里是我的代码的一个例子:我只是想知道如果我这样做是正确的:
IEnumerable<Product> retval = new List<Product>();
if (myInteger > 0)
{
retval = DAL.GetProducts1(); // this DAL function returns IEnumerable<Product>
}
else
{
retval = DAL.GetProductHistory(); // this DAL function returns IEnumerable<Product>
}
return retval
不需要创建一个空列表-只需使用
IEnumerable<Product> retval;
您的if
/else
将从您的DAL中设置相应列表的引用。
创建一个空列表可能不会伤害任何东西(因为列表不会占用太多内存,并且很快就符合GC的条件),但这是不必要的。
你也可以这样做
if (myInteger > 0)
{
return DAL.GetProducts1(); // this DAL function returns IEnumerable<Product>
}
else
{
return DAL.GetProductHistory(); // this DAL function returns IEnumerable<Product>
}
或仅
return myInteger > 0 ? DAL.GetProducts1() : DAL.GetProductHistory();
(假设两者返回相同类型)
并为自己保存一个变量,但这不会产生任何实际的差异。
不需要实例化retVal
,因为您在if
或else
子句中为其分配值,它最终将被分配一些值。所以你可以输入:
IEnumerable<Product> retval;
if (myInteger > 0)
{
retval = DAL.GetProducts1(); // this DAL function returns IEnumerable<Product>
}
else
{
retval = DAL.GetProductHistory(); // this DAL function returns IEnumerable<Product>
}
return retval;
或者甚至可以直接从if
和其他部分返回,如:
if (myInteger > 0)
{
return DAL.GetProducts1(); // this DAL function returns IEnumerable<Product>
}
else
{
return DAL.GetProductHistory(); // this DAL function returns IEnumerable<Product>
}
但是要确保所有的代码路径都返回一些值或设置值给retVal
。