日期:2014-05-17  浏览次数:21478 次

当前方法的代码已经过优化,因此无法计算表达式的值
ranPoint.X = ran.Next(minX, maxX);
                ranPoint.Y = ran.Next(minY, maxY);
                if (ranPointList.Count > 0)
                {
                    //若该随机点已出现过,则重新random,并重新检验
                    while (ranPointList.Contains(ranPoint))
                    {
                        ranPoint.X = ran.Next(minX, maxX);
                        ranPoint.Y = ran.Next(minY, maxY);
                    }
                    ranPointList.Add(ranPoint);
                }
                else
                {
                    ranPointList.Add(ranPoint);
                }

代码如上 启动程序后有时候可顺利执行,有时候就崩溃

------解决方案--------------------
try catch 一下,

还有就是 ranPoint 我猜应该是个class 那么 List 中 Contains 一个对象的话 是不现实的。
并且 你这里 就算 ranPoint 的 X和 Y 变了 但是 他还是 那个对象 - -。
而且 new 两个 XY 一样的 ranPoint 对象 一个放入 List 
然后再 List中 Contains 另一个 ranPoint 也会提示 List 中没这个 ranPoint。

如果 你的 ranPoint 是个 class 那么 
推荐你 还是 循环一下 匹配 X和Y 并且 新的对象 最好 New 一下。

如果你没懂 你可能要重新研究下 值类型和引用类型。

如果你不想变动当前的代码 那么 把ranPoint 从 class 改成 struct 就能 从 List 中 Contains 了。