作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个类Rectangle
它有一个方法 RandomPoint
返回其中的一个随机点。看起来像:
class Rectangle {
int W,H;
Random rnd = new Random();
public Point RandomPoint() {
return new Point(rnd.NextDouble() * W, rnd.NextDouble() * H);
}
}
但我希望它是一个IEnumerable<Point>
这样我就可以使用 LINQ
在上面,例如rect.RandomPoint().Take(10)
.
如何简洁的实现?
最佳答案
您可以使用迭代器 block :
class Rectangle
{
public int Width { get; private set; }
public int Height { get; private set; }
public Rectangle(int width, int height)
{
this.Width = width;
this.Height = height;
}
public IEnumerable<Point> RandomPoints(Random rnd)
{
while (true)
{
yield return new Point(rnd.NextDouble() * Width,
rnd.NextDouble() * Height);
}
}
}
关于c# - 自定义随机可枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13915676/
我是一名优秀的程序员,十分优秀!