拓展方法


foreach迭代变量是只读的

枚举器、迭代器
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
Spectrum spectra = new Spectrum();
foreach (var VARIABLE in spectra)
{
Console.WriteLine("枚举器:" + VARIABLE);
}
MyClass mc = new MyClass();
foreach (var VARIABLE in mc)
{
Console.WriteLine("迭代器:" + VARIABLE);
}
//LINQ迭代
int[] numbers = {2, 5, 6, 7, 2, 12};
IEnumerable<int> lowNums =
from number in numbers
where number < 10
select number;
foreach (var VARIABLE in lowNums)
{
Console.WriteLine(VARIABLE);
}
Console.ReadLine();
}
}
//迭代器实现
class MyClass {
public IEnumerator<string> GetEnumerator()
{
//IEnumerable<string> myEnumerable = BlockAndWhite();
return BlockAndWhite();
}
public IEnumerator<string> BlockAndWhite()
{
yield return "black";
yield return "gray";
}
}
//枚举器实现
class Spectrum : IEnumerable
{
string[] Colors = {"red", "blue", "yellow"};
public IEnumerator GetEnumerator()
{
return new ColorEnumerator(Colors);
}
}
class ColorEnumerator : IEnumerator
{
string[] _colors;
private int _position = -1;
public ColorEnumerator(string[] colors)
{
_colors = new string[colors.Length];
for (int i = 0; i < colors.Length; i++)
{
_colors[i] = colors[i];
}
}
public bool MoveNext()
{
if (_position < _colors.Length -1)
{
_position++;
return true;
}
else
{
return false;
}
}
public void Reset()
{
_position = -1;
}
public object Current
{
get
{
if (_position == -1) throw new InvalidOperationException();
if (_position > _colors.Length) throw new InvalidOperationException();
return _colors[_position];
}
}
}
}

本文深入探讨了C#中的迭代方法,包括枚举器和迭代器的使用,以及如何利用LINQ进行数据筛选。通过具体代码示例,展示了如何创建自定义的枚举器和迭代器,以及如何使用LINQ表达式来简化数据操作。
2065

被折叠的 条评论
为什么被折叠?



