C# 如何定义退货类型
我有以下代码:C# 如何定义退货类型,c#,C#,我有以下代码: 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&
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;
}
}
有人能告诉我如何声明名为result的变量吗。我尝试了以下操作,但出现语法错误:
var result = new IList<Content.Grid>();
var result=new IList();
IList是一个接口。不能构造接口的实例。必须创建实现该接口的具体类型的实例,例如:
var result = new List<Content.Grid>();
var result=newlist();
IList是一个接口。不能构造接口的实例。必须创建实现该接口的具体类型的实例,例如:
var result = new List<Content.Grid>();
var result=newlist();
IList
是一个接口,无法实例化。您需要选择IList的具体实现,并创建非抽象类的对象,例如,List
:
var result = new List<Content.Grid>();
var result=newlist();
IList
是一个接口,无法实例化。您需要选择IList的具体实现,并创建非抽象类的对象,例如,List
:
var result = new List<Content.Grid>();
var result=newlist();
不要使用var
,你会没事的;您不需要默认值,因为它只会被覆盖
IList<Content.Grid> result;
IList结果;
不要使用var
,你会没事的;您不需要默认值,因为它只会被覆盖
IList<Content.Grid> result;
IList结果;
不能实例化接口,只能实现它们
public class SomeList<T> : IList<T>
{
}
这应该可以做到。您不能实例化接口,只能实现它们
public class SomeList<T> : IList<T>
{
}
这样就可以了。您已经在交换机中返回了结果:
return data
.OrderBy(item => item.Order)
.ToList();
不需要在开关之前声明变量,也不需要在开关之后返回变量,因为您可以使用return语句跳出开关。(这就是你不需要休息的原因)
但是,您可以使用以下选项:
IList<Content.Grid> result;
您已在交换机中返回结果:
return data
.OrderBy(item => item.Order)
.ToList();
不需要在开关之前声明变量,也不需要在开关之后返回变量,因为您可以使用return语句跳出开关。(这就是你不需要休息的原因)
但是,您可以使用以下选项:
IList<Content.Grid> result;
如果IList是一个接口,您不能实例化它们。为什么不保留返回并删除中断?为什么有一个两个分支完全相等的开关呢?如果IList是一个接口,就不能实例化它们。为什么不保留返回值并删除中断?为什么会有一个两个分支完全相等的开关呢。var不是这里的问题,它是接口的实例化。@Tarka不,不是。此时不需要实例化任何东西;变量在开关中赋值。您的答案是“不要使用var,您会没事的。”如果代码是IList result=new IList()代码>它仍然不起作用。您的回答表明使用var
是问题所在,但事实并非如此。此外,答案中不需要括号。@TarkaDaal回答的是实际提出的问题,而不是虚构的问题如何实例化IList
,答案是“在开关之前创建一个未赋值的变量,在开关中赋值,然后返回它”。没有理由创建一个您立即覆盖的虚拟列表
。不过,谢谢你关于括号的观点。OP问的实际问题是“有人能告诉我如何声明名为result的变量吗?”。您编写代码的方式更加优雅,我没有和您争论。然而,var
与您的解决方案或OP的问题无关。var不是这里的问题,它是接口的实例化。@Tarka不,不是。此时不需要实例化任何东西;变量在开关中赋值。您的答案是“不要使用var,您会没事的。”如果代码是IList result=new IList()代码>它仍然不起作用。您的回答表明使用var
是问题所在,但事实并非如此。此外,答案中不需要括号。@TarkaDaal回答的是实际提出的问题,而不是虚构的问题如何实例化IList
,答案是“在开关之前创建一个未赋值的变量,在开关中赋值,然后返回它”。没有理由创建一个您立即覆盖的虚拟列表
。不过,谢谢你关于括号的观点。OP问的实际问题是“有人能告诉我如何声明名为result的变量吗?”。您编写代码的方式更加优雅,我没有和您争论。但是,var
与您的解决方案或OP的问题无关。这不必要地创建了一个列表,然后该列表将被丢弃。这不必要地创建了一个列表,然后该列表将被丢弃。变量声明中有不必要的括号。变量声明中有不必要的括号。