发现过程:如上代码在Debug和Release下执行程序时,出来的结果不一样(Bebug下找到6个,Release下找到4个),由于代码中并没有使用不安全代码,所以怀疑是Math.Atan2的问题,于是在代码483行加入代码 File.AppendAllText("Azimuth.txt", azimuth.ToString() + Environment.NewLine);想打印出Release时计算出来的角度,但是一加这行代码后,结果却莫名其妙的正确了。后来由于考虑到实现中实际只需要按方向做角度排序,并不需要算出较精确的角度,所以在代码208行用了一个其他的方法绕过了Math.Atan2的使用,至此代码不管在Debug下还是在Release下都能正常出结果了。
因为以前只有在c++中出现过这种问题,是因为指针使用不当,出现的内存问题,所以这边只能怀疑是Math.Atan2的方法有较隐蔽的内存错误,而Math.Atan2这个方法微软也确实是调用了它的底层库,不知其具体实现。也请各位大侠指点
ps:
1.这条大虾请无视,Debug下F5还是Ctrl+F5没关系,但Release必须Ctrl+F5或者运行编译后的exe才算执行程序,才能看到差异
2.我同事的机器和我自己家里的机器都会出这问题,但我自己公司的机器确没有这问题,所以我这不能保证这个问题一定能在你的机器上出现