c#加什么Attribute后编译器不会对方法进行优化

victor596 2016-03-09 07:07:03
我碰到一个情况:
有一个不带参数方法,此方法目的是输出一串随机数。
正常情况下每次的输出不一样,但把此方法放在一个循环中奇怪出现了,它竟然输出一样的东西.所以我猜测C#可能是编译时自动优化了.我又隐隐的记得有一个Attribute放在方法上编译器就不会随便优化

神们,你们还记得起不?
...全文
252 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
熊猫rrr 2016-03-10
  • 打赏
  • 举报
回复
楼上正解~~~
为轮子而生 2016-03-10
  • 打赏
  • 举报
回复
new Random()要放在循环里面也不是不可以,其实如果多次随机之间没有时间间隔的话,放在哪里都是一样,因为默认使用了时间种子,你可以每次使用一个不一样的数作为种子来初始化Random,比如每次i++,然后new Random(i)。 你了解了“随机并不是真的随机”后,这个问题就很简单了。
crystal_lz 2016-03-10
  • 打赏
  • 举报
回复
这和优化没有半毛钱的关系 遇到问题先找自己原因
yangyi_2009 2016-03-09
  • 打赏
  • 举报
回复
因为所谓的“随机数”是与时间有关的,循环时速度太快了,时间值一样,自然就产生一样的数了。这和编译器的优化没有关系。
Poopaye 2016-03-09
  • 打赏
  • 举报
回复
new Random要放循环外面
cheng2005 2016-03-09
  • 打赏
  • 举报
回复
你还是先从你方法的逻辑入手吧,先确认你的逻辑没问题再去研究编译器优化出问题的可能性吧

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧