假设我有两个点,int x1, x2哪里x1可以更大,更小或相等x2.我想生成这两个点之间的所有整数(包括开头x1和结尾x2),或者只是x1两个点相等的值.是否有任何优雅的方式来生成IEnumerable<int>这些值?
您可以使用此迭代器块:
IEnumerable<int> CreateRange(int x1, int x2) {
var increment = x2 > x1 ? 1 : -1;
for (var i = x1; i != x2; i += increment)
yield return i;
yield return x2;
}
Run Code Online (Sandbox Code Playgroud)
它是高效的,创建一个范围就像使用一样干净Enumerable.Range:
CreateRange(10, 5).Select( ... )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
458 次 |
| 最近记录: |