将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

将object类型的空列表设置为返回object类型IEnumerable的函数

不需要创建一个空列表-只需使用

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,因为您在ifelse子句中为其分配值,它最终将被分配一些值。所以你可以输入:

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

相关文章: