请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

使用yield return 和 直接使用return的区别

如题
对于2分40秒的时候——使用yield return 下次调用的时候还会继续执行 这句话不太理解

按照我的理解,每次一个http请求,会通过http协议,传入到控制器中,[FromRoute]或者[FromBody]会解析这些参数,接着传入到Dto中,Dto的data annocation注解会自动对这些参数的值进行验证,使用自定义验证方法,如果参数校验不正确,就直接return一个4xx或者5xx级别的响应返回给前端,所以按照我的理解:1次前端请求->后端拿到数据->解析验证->验证失败->直接return返回给前端报错,所以就直接return了,这一次http请求就结束了

老师说的yield return 下次调用的时候还会继续执行 这句话不太理解,那下次调用的时候,不就又是一个新的http请求吗?又会执行1次前端请求->后端拿到数据->解析验证-> 不算成不成功,最后都会返回给结果给前端,所以“下次调用的时候还会继续执行”这句话不太理解,希望老师给我一个回复,多谢

正在回答

1回答

阿莱克斯刘 2022-03-18 05:28:00

 yield是C#为了简化遍历操作的特殊的语法,它的作用是将当前集合中的元素立即返回,只要没有yield break或 yield return,方法还是会继续执行循环到迭代结束。实际上,使用yield return返回以后的方法的返回类型是一个集合,并且是一个带有迭代功能的集合,也就是一个支持IEnumerator接口的集合。


而所谓的“yield return 下次调用的时候还会继续执行”中的“下次调用”指的并不是下次的http请求,而是数据验证的迭代的调用过程,因为我们dto中的字段有好多个,每个都要验证,所以是一个迭代验证的过程。


这里有一篇非常好的文章值得看一下,https://blog.csdn.net/fdyshlk/article/details/80215192




0 回复 有任何疑惑可以回复我~
  • 提问者 南船座 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-03-18 09:01:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信