3

TSource、Tkey の概念を例で理解したいと思います。

私たちはコードを持っています

        class Pet
        {
            public string Name { get; set; }
            public int Age { get; set; }
        }

        public static void OrderByEx1()
        {
            Pet[] pets = { new Pet { Name="Barley", Age=8 },
                           new Pet { Name="Boots", Age=4 },
                           new Pet { Name="Whiskers", Age=1 } };

            IEnumerable<Pet> query = pets.OrderBy(pet => pet.Age);

            foreach (Pet pet in query)
            {
                Console.WriteLine("{0} - {1}", pet.Name, pet.Age);
            }
        }

        /*
         This code produces the following output:

         Whiskers - 1
         Boots - 4
         Barley - 8
        */

TSource は「pet」、キーは「Age」、pet => pet.Age は

 Func<TSource, TKey>?

ありがとう。

4

3 に答える 3

10

いいえ、TSourceは typePetで、TKeyは typeintです。したがって、型推論を使用しないと、次のようになります。

IEnumerable<Pet> query = pets.OrderBy<Pet, int>(pet => pet.Age);

TSourceandTKeyは、メソッドのジェネリック型パラメーターです。それらはクラスのジェネリック型パラメーターのようなものと考えることができます...つまりList<T>Tは型パラメーターであり、次のように書くと:

List<string> names = new List<string>();

次に、ここでの型引数は次のとおりです (したがって、この場合、手の込んだ方法でstringそれを言うことができます)。T=string

あなたの場合の違いは、メソッド呼び出しの引数に基づいて、コンパイラが型引数を推測していることです。

于 2012-08-17T20:35:51.937 に答える
1

いいえ、msdnからEnumerable.OrderBy<TSource, TKey> Method (IEnumerable<TSource>, Func<TSource, TKey>

  • Tソース

    ソースの要素の型。

  • Tキー

    keySelector によって返されるキーの型。パラメーター ソース タイプ: System.Collections.Generic.IEnumerable

    順序付けする値のシーケンス。keySelector タイプ: System.Func

    要素からキーを抽出する関数。

そうTSource= Pet; TKey=int

于 2012-08-17T20:40:56.210 に答える
1

Jon Skeet のは、これらの詳細を非常に徹底的にカバーしています。そうは言っても、この場合、Visual Studio でマウス フロート ツールを使用して Generic のプレイアウトを確認すると便利です。

ここに画像の説明を入力

于 2012-08-17T20:50:26.197 に答える