gpt4 book ai didi

c# - 从具有不同 的通用列表中随机选择

转载 作者:太空狗 更新时间:2023-10-29 23:35:30 28 4
gpt4 key购买 nike

我正在寻找能够从列表中获取随机元素的最佳方法,其中 T 将是不通过基类关联的不同类型的对象。

我一直在寻找创建 List 的扩展方法,或接收 List 的辅助方法,但我一直无法将它们组合在一起。每次我在处理一个我不知道是什么的 T 时遇到问题。

是否可以在不创建接口(interface)或基类的情况下执行此操作?因为我看不到任何有意义的方式来为不同的 T 实现基类或接口(interface)。

问候杰斯珀豪格


在阅读了更多有关泛型方法的内容后,我设法自己编写了一些代码。这是我的解决方案:

public static class ListExt
{
public static T RandomItem<T>(this List<T> list)
{
if (list.Count == 0)
return default(T);
if (list.Count == 1)
return list[0];
Random rnd = new Random(DateTime.Now.Millisecond);
return list[(rnd.Next(0, list.Count))];
}
}

这是一种扩展方法,可以使用以下代码从任何列表中选择随机项目:

private Picture SelectTopPic()
{
List<Picture> pictures = GetPictureList();
return pictures.RandomItem();
}

最佳答案

没有“不通过基类关联的对象”这样的东西。如果不出意外,您将永远拥有 object秒。所以一个List<object>会做你想做的事。

关于c# - 从具有不同 <T> 的通用列表中随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2041445/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com