我想通过示例了解 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”,key 是“Age”,而 pet => pet.Age 是
 Func<TSource, TKey>?

谢谢。

最佳答案

不, TSourcePet 类型, TKeyint 类型。所以不使用类型推断,你会有:

IEnumerable<Pet> query = pets.OrderBy<Pet, int>(pet => pet.Age);
TSourceTKey 是方法的 generic type parameters。您可以将它们视为类的泛型类型参数……因此在 List<T> 中, T 是类型参数,如果您编写:
List<string> names = new List<string>();

那么这里的类型参数是 string (所以你可以在这种情况下以手动方式说 T=string )。

您的情况的不同之处在于编译器正在根据方法调用参数为您推断类型参数。

关于c# - 使用 OrderBy<TSource, TKey>(IEnumerable<TSource>, Func<TSource, TKey>),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12012812/

10-12 12:37