0

次のコードがあります。

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

5 に答える 5

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;
于 2012-11-26T09:52:40.387 に答える
1

IList はインターフェイスです。インターフェイスのインスタンスを構築することはできません。次のような、そのインターフェイスを実装する具象型のインスタンスを作成する必要があります。

var result = new List<Content.Grid>();
于 2012-11-26T09:49:32.420 に答える
1

IListはインターフェースであり、インスタンス化できません。たとえば、次IListのような非抽象クラスの特定の実装を選択してオブジェクトを作成する必要があります。List

var result = new List<Content.Grid>();
于 2012-11-26T09:49:59.093 に答える
0

インターフェイスをインスタンス化することはできません。実装するだけです。

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

}

に行くには型パラメータが必要なIListので、通常のクラスにそれを持ってください

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

それはそれを行う必要があります。

于 2012-11-26T09:51:56.537 に答える
-1

を使用しないでくださいvar。問題ありません。上書きされるだけなので、デフォルト値は必要ありません。

IList<Content.Grid> result;
于 2012-11-26T09:50:28.837 に答える