dotnet 10 中引入了一个新的 LINQ 方法Shuffle可以将一个集合中的元素随机洗牌返回New API摘要:Samplevarsource = Enumerable.Range(15).ToArray;Console.WriteLine(string.Join(",", source));source.Shuffle;Console.WriteLine(string
新引入的 API 定义如下:
namespaceSystem.Linq;publicstaticclassEnumerable
{
publicstaticIEnumerable Shuffle(thisIEnumerable source) { }
}
publicstaticclassAsyncEnumerable
{
publicstaticIAsyncEnumerable Shuffle(thisIAsyncEnumerable source) { }
}
publicstaticclassQueryable
{
publicstaticIQueryable Shuffle(thisIQueryable source) { }
}
Samplevarsource = Enumerable.Range(15).ToArray;
Console.WriteLine(string.Join(",", source));
source.Shuffle;
Console.WriteLine(string.Join(",", source));
大家可以先猜一下输出结果会是什么,输出结果如下:
我们再来做一些测试,看看返回的数据,测试代码如下:
varsource = Enumerable.Range(15).ToArray;Console.WriteLine(string.Join(",", source.Shuffle));
Console.WriteLine(string.Join(",", source.Shuffle.Take(3)));
Console.WriteLine(string.Join(","3)));
Console.WriteLine(string.Join(","6)));
输出结果如下:
varshuffled = source.Shuffle;
Console.WriteLine(string.Join(",", shuffled));
Console.WriteLine(string.Join(",", shuffled));
输出结果如下:
output3可以看到即使是同一个 shuffle 返回值的对象,每次使用时也不相同,实际数据的填充是遍历时获取的,并不是提前生成好的,确定的
如果需要对数组进行重排可以使用 .NET 8 引入的Random.Shuffle方法,使用示例如下:Console.WriteLine("Random.Shared.Shuffle(array) sample");vararray = Enumerable.Range(110).ToArray;
Console.WriteLine(string.Join(",", array));
Random.Shared.Shuffle(array);
Console.WriteLine(string.Join(",", array));
.NET 8 Preview 1 中新增的 Random 方法
来源:opendotnet
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!