通用扩展方法C#

时间:2016-06-28 09:09:56

标签: c# arrays list generics collections

我创建了一些扩展方法,我想在不同的集合上使用,主要是那些实现IList和数组集合[]的方法,每当我创建扩展方法时,我需要创建2而不是只有1,这样它可以适用于两者

    public static IList<T> Shuffle<T>(this IList<T> inputCollection)
    {

    }

    public static T[] Shuffle<T>(this T[] inputCollection)
    {

    }

我的大多数方法都需要使用索引,所以我不能使用IEnumerable是否有其他方法可以只编写一个扩展方法并将其用于两个所需的集合?有时我还会使用string,这是另一种方法。

2 个答案:

答案 0 :(得分:6)

你可以尝试

public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> value)

签名;并使用它

IList<T> list = Shuffle(myList).ToList();
T[] array = Shuffle(myArray).ToArray();

甚至

IList<T> list = myList.Shuffle().ToList();
T[] array = myArray.Shuffle().ToArray();

答案 1 :(得分:0)

我建议使用此扩展方法,因为所有List个对象都是从IEnumerable继承的。

public static IEnumerable<T> MethodName<T>(this IEnumerable<T> value)