通用扩展方法C#

Pre*_*tel 2 c# arrays generics collections list

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

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

    }

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

    }
Run Code Online (Sandbox Code Playgroud)

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

Dmi*_*nko 6

你可以试试

public static IEnumerable<T> Shuffle<T>(this IEnumerable<T> value)
Run Code Online (Sandbox Code Playgroud)

签名; 并使用它

IList<T> list = Shuffle(myList).ToList();
T[] array = Shuffle(myArray).ToArray();
Run Code Online (Sandbox Code Playgroud)

甚至

IList<T> list = myList.Shuffle().ToList();
T[] array = myArray.Shuffle().ToArray();
Run Code Online (Sandbox Code Playgroud)