C#在for循环内新建对象的问题

exiaoran_again 2018-07-12 01:28:49

如图,每次进入for循环,在创建对象以后,都直接进入下一轮循环,并不执行后面的赋值操作,不知道为什么.
...全文
1352 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2018-07-20
  • 打赏
  • 举报
回复
引用 31 楼 exiaoran_again 的回复:
[quote=引用 21 楼 daixf_csdn 的回复:]
你在循环的最后一行,加一个Console输出。深度怀疑你是调试器不熟悉,按错快捷键了,实际上后面是执行了,但你以为没执行。你加了Console输出,看调试完后,有没有相应输出。


的确是不熟悉,实际是运行了的,只是按F10逐过程调试的话,在初始化的时候不会进入初始化函数,后面语句可以逐步跟踪.而用F11逐语句调试,在初始化函数完毕后,不显示后续语句的逐句执行过程,直接进入下一循环.[/quote]
我看到了这几个字:“实际是运行了的”,你是说,已经验证过了,确实执行了代码,只是你调试看起来没执行是吧。
那么,你再完整的研究一下,把vs调试的功能搞透,可能就能明白为什么会这样了。因为你的问题,和你调试的场景太相关了,别人很难判断具体的原因。
圣殿骑士18 2018-07-20
  • 打赏
  • 举报
回复
引用 31 楼 exiaoran_again 的回复:
[quote=引用 21 楼 daixf_csdn 的回复:]
你在循环的最后一行,加一个Console输出。深度怀疑你是调试器不熟悉,按错快捷键了,实际上后面是执行了,但你以为没执行。你加了Console输出,看调试完后,有没有相应输出。


的确是不熟悉,实际是运行了的,只是按F10逐过程调试的话,在初始化的时候不会进入初始化函数,后面语句可以逐步跟踪.而用F11逐语句调试,在初始化函数完毕后,不显示后续语句的逐句执行过程,直接进入下一循环.[/quote]
废话这么多,加Console输出没有?结果如何?会用Console输出吗,不会百度下。
exiaoran_again 2018-07-19
  • 打赏
  • 举报
回复
引用 21 楼 daixf_csdn 的回复:
你在循环的最后一行,加一个Console输出。深度怀疑你是调试器不熟悉,按错快捷键了,实际上后面是执行了,但你以为没执行。你加了Console输出,看调试完后,有没有相应输出。


的确是不熟悉,实际是运行了的,只是按F10逐过程调试的话,在初始化的时候不会进入初始化函数,后面语句可以逐步跟踪.而用F11逐语句调试,在初始化函数完毕后,不显示后续语句的逐句执行过程,直接进入下一循环.
exiaoran_again 2018-07-19
  • 打赏
  • 举报
回复


引用 28 楼 qiaohuyue 的回复:
首先,不推荐,你用中文 做名字。

其次,你吧对象 临时 定义在 for的 外面,内部每次 new 都会改变上一次值,如果你需要创建多个,那么就需要在 for 里面进行

临时 temp = new 临时();


中文编程有什么不好的呢,我用着挺好的啊.
圣殿骑士18 2018-07-13
  • 打赏
  • 举报
回复
你在循环的最后一行,加一个Console输出。深度怀疑你是调试器不熟悉,按错快捷键了,实际上后面是执行了,但你以为没执行。你加了Console输出,看调试完后,有没有相应输出。
正怒月神 2018-07-13
  • 打赏
  • 举报
回复
我觉得,你按f10调试看看,别按f5.。。。。。。
XBodhi. 2018-07-13
  • 打赏
  • 举报
回复
首先,不推荐,你用中文 做名字。

其次,你吧对象 临时 定义在 for的 外面,内部每次 new 都会改变上一次值,如果你需要创建多个,那么就需要在 for 里面进行

临时 temp = new 临时();
闭包客 2018-07-13
  • 打赏
  • 举报
回复
实际上是运行了的,至于逐语句为什么和你的期望不同,估计和库的加载方法或者调试配置有关。
维秀斯丢丢 2018-07-13
  • 打赏
  • 举报
回复
按你的贴图,实测不会出现你的情况
圣殿骑士18 2018-07-13
  • 打赏
  • 举报
回复
引用 26 楼 zhoujg751206 的回复:
执行完一段时间得赋值等于null。否则不断的new 内存会暴涨。最后撑死

没这回事。你需要更深入的了解一下垃圾回收机制。
  • 打赏
  • 举报
回复
执行完一段时间得赋值等于null。否则不断的new 内存会暴涨。最后撑死
  • 打赏
  • 举报
回复
登录用户 临时 = new 登录用户 。把这一行放到循环里面去啊。
Anakin_Skywalker 2018-07-13
  • 打赏
  • 举报
回复
终于见识到这种毫不顾忌的中文编程

也许你构造函数里干了什么?贴出来
  • 打赏
  • 举报
回复
最好把中文变量名换成英文的,然后你再试试
exiaoran_again 2018-07-12
  • 打赏
  • 举报
回复
引用 11 楼 wanghui0380 的回复:
谁知道你new的时候干了啥。请把你的所谓的初始化过程发出来


就是因为啥也没干,所以没想到这是槽点.....
exiaoran_again 2018-07-12
  • 打赏
  • 举报
回复
引用 10 楼 twotuli_software 的回复:
动脑子想想吧,怎么可能不执行。


我一路F11下来,完成New里面的操作以后,自动回到for最上端进行下一循环了,第一次碰到,以为没有执行.
exiaoran_again 2018-07-12
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
完成什么“初始化”动作?

如果你懒得贴出来,那么就先把你的初始化代码注释掉。免得你一直说诡异,但是又不贴出真正的调试。


另外提醒你,不要在实例化代码中写复杂的语句。实例化中应该就是仅仅给最简单、傻瓜都懂的一些值变量赋值而已。如果你一遍遍神秘地去重复说什么“初始化”,这就让人怀疑你破坏了设计模式。

vs 并不支持调试实例化方法。所以不要在实例化方法里边乱写代码!!!!





就是因为太简单了,所以没有提.
微辅助 2018-07-12
  • 打赏
  • 举报
回复
你看下是否多线程同时调用了额
token不能为空 2018-07-12
  • 打赏
  • 举报
回复
你开的是release模式调试,编译器会优化你写的无意义代码,自然也就没法调试
wanghui0380 2018-07-12
  • 打赏
  • 举报
回复
谁知道你new的时候干了啥。请把你的所谓的初始化过程发出来
加载更多回复(10)

110,569

社区成员

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

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

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