我正在寻找最好的方法来从List中获取一个随机元素,其中T将是通过基类无关的不同类型的对象.
我一直在为List创建一个扩展方法,或者是一个收到List的帮助方法,但我还是没能把它放在一起.每次我遇到处理T的问题我都不知道是什么.
是否可以在不创建接口或基类的情况下执行此操作?因为我看不到为不同的T实现基类或接口的任何有意义的方法.
关于Jesper Hauge
在更多关于泛型方法的阅读之后,我设法自己编写了一些代码.这是我的解决方案:
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))];
}
}
Run Code Online (Sandbox Code Playgroud)
这是一种扩展方法,可以使用以下代码从任何List中选择随机项:
private Picture SelectTopPic()
{
List<Picture> pictures = GetPictureList();
return pictures.RandomItem();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |