我很困惑我应该从我的公共API方法和属性返回哪种集合类型.
我想到的收藏品是IList,ICollection和Collection.
返回其中一种类型总是优先于其他类型,还是取决于具体情况?
我想创建一个对象的新实例 IEnumerable<object>
我可以这样做吗?
IEnumerable<object> a = new IEnumerable<object>();
Run Code Online (Sandbox Code Playgroud) 我需要能够在Linq查询中具有可选参数,或者如果需要从查询中删除该可选参数,则能够将查询分配给类似IF的var.
如果我在IF语句中设置查询var,那么当我尝试循环时,它告诉我var在上下文中不存在.
if (whichGroup == "All")
{
var listOppLineData = (from o in db.opportunity_vws
where o.fiscal_yr_and_qtr == qtr
select o
);
}
else
{
var listOppLineData = (from o in db.opportunity_vws
where o.fiscal_yr_and_qtr == qtr && o.Group == whichGroup
select o
);
}
foreach (var data in listOppLineData) //listOppLineData doesn't exist here
{
Run Code Online (Sandbox Code Playgroud)
我需要在我认为的IF语句之前设置var,但我不知道将它设置为什么.
var listOppLineData = ""; // gives me
Cannot implicitly convert type 'System.Linq.IQueryable<Forecast.Models.opportunity_vw>' to 'string'
IQueryable listOppLineData = new IQueryable(); //gives me
Cannot create an instance of …Run Code Online (Sandbox Code Playgroud) 这些都是一样的:
IEnumerable<string> i;
i = Enumerable.Empty<string>();
i = new string[0];
Run Code Online (Sandbox Code Playgroud)
那么,使用哪个?
我认为第一个更清楚地传达意图,但它更大,更嘈杂,更不用说调试器中的丑陋.如果我正在阅读Reflector,那么第二个在内存和CPU方面也更有效率.
我倾向于new type[0],但想知道你们都在想什么.