簡體   English   中英

如何定義退貨類型

[英]How can I define my return type

我有以下代碼:

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

您已經在交換機中返回了結果:

return data
    .OrderBy(item => item.Order)
    .ToList();

無需在切換之前聲明變量或在切換之后返回變量,因為您可以通過返回語句跳出切換。 (這就是為什么您不需要休息的原因)

但是,您可以使用以下方法:

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;

IList是一個接口。 您不能構造接口的實例。 您必須創建實現該接口的具體類型的實例,例如:

var result = new List<Content.Grid>();

IList是一個接口,無法實例化。 您需要選擇IList特定實現並創建非抽象類的對象,例如List

var result = new List<Content.Grid>();

您不能實例化接口,只能實現它們。

public class SomeList<T> : IList<T>
{

}

您需要一個類型參數才能轉到IList ,因此請在常規類中使用它

IList<T> result = New SomeList<T>();

那應該做。

不要使用var ,這樣就可以了; 您不需要默認值,因為它將被覆蓋。

IList<Content.Grid> result;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM