我有以下代码:
public IList<Content.Grid> GetContentGrid(string pk)
{
// How can I define result to hold the return
// data? I tried the following but it does not
// work:
var result = new IList<Content.Grid>();
var data = _contentRepository.GetPk(pk)
.Select((t, index) => new Content.Grid()
{
PartitionKey = t.PartitionKey
....
});
switch (pk.Substring(2, 2))
{
case "00":
return data
.OrderBy(item => item.Order)
.ToList();
break;
default:
return data
.OrderBy(item => item.Order)
.ToList();
break;
}
}
VS2012告诉我不需要中断,所以我想做的是从交换机内部删除返回,将结果存储在变量中,然后在切换完成后有:
return result;
有人能告诉我如何声明名为result的变量。我尝试了以下但是这给出了语法错误:
var result = new IList<Content.Grid>();
答案 0 :(得分:2)
您已在结果中返回结果:
return data
.OrderBy(item => item.Order)
.ToList();
在切换之后不需要在/之前声明变量,因为你使用return语句跳出开关。 (这就是你不需要休息的原因)
但是,您可以使用以下内容:
IList<Content.Grid> result;
...
case "00":
result = data
.OrderBy(item => item.Order)
.ToList();
break;
default:
result = data
.OrderBy(item => item.Order)
.ToList();
break;
...
return result;
答案 1 :(得分:1)
IList是一个界面。您无法构造接口实例。您必须创建实现该接口的具体类型的实例,例如:
var result = new List<Content.Grid>();
答案 2 :(得分:1)
IList
是一个接口,无法实例化。您需要选择IList
的特定实现并创建非抽象类的对象,例如List
:
var result = new List<Content.Grid>();
答案 3 :(得分:0)
您无法实例化接口,只能实现它们。
public class SomeList<T> : IList<T>
{
}
您需要一个类型参数才能转到IList
,因此请将其放入普通班级
IList<T> result = New SomeList<T>();
应该这样做。
答案 4 :(得分:-1)
不要使用var
,你会没事的;你不需要一个默认值,因为它会被覆盖。
IList<Content.Grid> result;