【发布时间】:2014-11-27 06:34:06
【问题描述】:
我想在 C# 中创建一个 IEnumerable 类,当获取下一个值时从对象列表中随机获取它
每次我想获得下一个时我都想获得随机值,例如我的列表长度是 100,每次获得随机值时我都会获得 1000 倍的值
我创建了一个下面的类,但是当从类创建新实例时我的程序被挂起
public class MyEnumerable:System.Collections.IEnumerable
{
public int RegionID { get; set; }
List<Medium> RankedList;
MediaEnumerator pe;
public MyList(int regionID)
{
RegionID = regionID;
RankedList = ShowVideo.GetRankList(regionID);
pe = new MediaEnumerator(RankedList);
}
public System.Collections.IEnumerator GetEnumerator()
{
return (IEnumerator)(pe);
}
}
public class MediaEnumerator : IEnumerator
{
List<Medium> RankedList;
int position = -1;
public MediaEnumerator(List<Medium> list)
{
RankedList = list;
}
Random rnd = new Random();
public bool MoveNext()
{
position = rnd.Next(RankedList.Count);
return true;
}
public void Reset()
{
position = -1;
}
object IEnumerator.Current
{
get
{
return Current;
}
}
public FileInfo Current
{
get
{
try
{
FileInfo fi = new FileInfo(RankedList[position].MediaUrl);
return fi;
}
catch (IndexOutOfRangeException)
{
throw new InvalidOperationException();
}
}
}
}
【问题讨论】:
-
我假设你有问题完成迭代无限可枚举? (因为没有示例显示实际挂起的代码...)
-
你应该发布你的真实代码。由于类和构造函数的名称不同(MyEnumerable,MyList),因此无法编译。
-
@Euphoric 我完成了问题,我的代码是真实的代码
-
@Fratyx 这个代码是我的真实代码
标签: c# ienumerable ienumerator