如何定义返回类型

时间:2012-11-26 09:47:23

标签: 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>();

        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>();

5 个答案:

答案 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;