加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – “yield关键字”在迭代器块之外是否有用?

发布时间:2020-12-15 03:59:20 所属栏目:百科 来源:网络整理
导读:yield关键字文档说: The yield keyword signals to the compiler that the method in which it appears is an iterator block. 我在任何迭代器块之外遇到了使用yield关键字的代码.这应该被认为是编程错误还是罚款? 编辑对不起,忘记发表我的代码: int yiel
yield关键字文档说:

The yield keyword signals to the compiler that the method in which it
appears is an iterator block.

我在任何迭代器块之外遇到了使用yield关键字的代码.这应该被认为是编程错误还是罚款?

编辑对不起,忘记发表我的代码:

int yield = previousVal/actualVal;
return yield; // Should this be allowed!!!???

谢谢.

解决方法

在迭代器块之外使用收益是好的 – 它只是意味着它不被用作上下文关键字.

例如:

// No idea whether this is financially correct,but imagine it is :)
decimal yield = amountReturned / amountInvested;

在这一点上,它不是一个上下文关键字(它从来不是一个“完整”关键字),它只是一个标识符.除非在清晰度方面显然是最佳选择,否则我会尽量避免使用它,但有时可能会这样做.

您只能将其用作产量返回和收益率中断的上下文关键字,这仅在迭代器块中才有效. (他们将一种方法转化为迭代器.)

编辑:回答你的“应该允许”的问题…是的,应该.否则,当C#2被释放时,使用yield作为标识符的所有现有C#1代码将变得无效.它应该小心使用,而C#团队确保它从来没有实际上是模糊的,但它是有道理的.

许多其他上下文关键字也是如此 – “从”,“选择”,“在哪里”等你想阻止那些从来不是标识符?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读