一.迭代器
class MyList : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 8;
yield return 6;//进行六次值返回
}IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
使用方法:
var e = list.GetEnumerator();
while(e.MoveNext())
{
需要实现功能的代码
}
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;//使用IEnumerable一定要添加
namespace ConsoleApp1
{
class A { public int a; }
class MyList : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 8;
yield return 6;
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
}
class Program
{
static int MyCount(MyList list)
{
int sum = 0;
var e = list.GetEnumerator();
//foreach (var i in list)
while(e.MoveNext())
{
sum++;
}
return sum;
}
static int MyMax(MyList list)
{
int max = int.MinValue;
var e = list.GetEnumerator();
while (e.MoveNext())
{
if (e.Current > max)
{
max = e.Current;
}
}
return max;
}
static void Main(string[] args)
{
var list = new MyList();
Console.WriteLine(MyMax(list));//打印8
Console.WriteLine(MyCount(list));//打印6
}
}
}
二.扩展方法
可以减少在主函数中额外使用函数
扩展空间函数
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
static class MyExMethod
{
public static int MyCount(this MyList list)
{
int sum = 0;
var e = list.GetEnumerator();//枚举数
//foreach (var i in list)
while (e.MoveNext())
{
sum++;
}
return sum;
}
public static int ToInt(this String s)
{
return int.Parse(s);
}
}
}
主空间
// See https://aka.ms/new-console-template for more information
using System.Diagnostics;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Collections;//使用IEnumerable一定要添加
namespace ConsoleApp1
{
class A { public int a; }
class MyList : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 8;
yield return 6;
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
public int MyCount(IEnumerable<int> list)
{
int sum = 0;
var e = list.GetEnumerator();
//foreach (var i in list)
while (e.MoveNext())
{
sum++;
}
return sum;
}
class MyList2 : IEnumerable<int>
{
public IEnumerator<int> GetEnumerator()
{
yield return 1;
yield return 2;
yield return 3;
yield return 4;
yield return 8;
yield return 10;
}
IEnumerator IEnumerable.GetEnumerator()
{
throw new NotImplementedException();
}
public int MyCount(IEnumerable<int> list)
{
int sum = 0;
var e = list.GetEnumerator();
//foreach (var i in list)
while (e.MoveNext())
{
sum++;
}
return sum;
}
class Program
{
static int MyMax(MyList list)
{
int max = int.MinValue;
var e = list.GetEnumerator();
while (e.MoveNext())
{
if (e.Current > max)
{
max = e.Current;
}
}
return max;
}
static void Main(string[] args)
{
var list = new MyList();
var list2 = new MyList2();
Console.WriteLine(MyMax(list));//打印8
Console.WriteLine(list2.MyCount(list2));//打印6
string a="123";
int b = a.ToInt();
Console.WriteLine(b);
}
}
}
}
}