Gra*_*ant 5 c# generics parameters extension-methods
我正在尝试创建一个扩展方法,该方法将对通用列表集合的内容进行洗牌而不管其类型如何,但我不确定在<..>之间放置什么作为参数.我把对象?或类型?我希望能够在我拥有的任何List集合中使用它.
谢谢!
public static void Shuffle(this List<???????> source)
{
Random rnd = new Random();
for (int i = 0; i < source.Count; i++)
{
int index = rnd.Next(0, source.Count);
object o = source[0];
source.RemoveAt(0);
source.Insert(index, o);
}
}
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 11
你需要使它成为通用方法:
public static void Shuffle<T>(this List<T> source)
{
Random rnd = new Random();
for (int i = 0; i < source.Count; i++)
{
int index = rnd.Next(0, source.Count);
T o = source[0];
source.RemoveAt(0);
source.Insert(index, o);
}
}
Run Code Online (Sandbox Code Playgroud)
这将允许它与任何List<T>
.