您的位置:首页 > 编程语言 > C#

6.数组 枚举 -C#高级编程

2016-12-10 18:54 134 查看
本文固定链接:http://blog.csdn.net/u013108312/article/details/53560283

using System;
using System.Collections;
using System.Collections.Generic;

namespace Wrox.ProCSharp.Arrays
{
public class HelloCollection
{
public IEnumerator<string> GetEnumerator()
{
yield return "Hello";
yield return "World";
}
}

class Program
{
static void Main()
{
HelloWorld();
MusicTitles();

var game = new GameMoves();

IEnumerator enumerator = game.Cross();
while (enumerator.MoveNext())
{
enumerator = enumerator.Current as IEnumerator;
}
}

static void MusicTitles()
{
var titles = new MusicTitles();
foreach (var title in titles)
{
Console.WriteLine(title);
}
Console.WriteLine();

Console.WriteLine("reverse");
foreach (var title in titles.Reverse())
{
Console.WriteLine(title);
}
Console.WriteLine();

Console.WriteLine("subset");
foreach (var title in titles.Subset(2, 2))
{
Console.WriteLine(title);
}

}

static void HelloWorld()
{
var helloCollection = new HelloCollection();
foreach (string s in helloCollection)
{
Console.WriteLine(s);
}
}
}
}


using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace Wrox.ProCSharp.Arrays
{
public class GameMoves
{
private IEnumerator cross;
private IEnumerator circle;

public GameMoves()
{
cross = Cross();
circle = Circle();
}

private int move = 0;
const int MaxMoves = 9;

public IEnumerator Cross()
{
while (true)
{
Console.WriteLine("Cross, move {0}", move);
if (++move >= MaxMoves)
yield break;
yield return circle;
}
}

public IEnumerator Circle()
{
while (true)
{
Console.WriteLine("Circle, move {0}", move);
if (++move >= MaxMoves)
yield break;
yield return cross;
}
}
}

}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Wrox.ProCSharp.Arrays
{
public class MusicTitles
{
string[] names = {
"Tubular Bells", "Hergest Ridge",
"Ommadawn", "Platinum" };

public IEnumerator<string> GetEnumerator()
{
for (int i = 0; i < 4; i++)
{
yield return names[i];
}
}

public IEnumerable<string> Reverse()
{
for (int i = 3; i >= 0; i--)
{
yield return names[i];
}
}

public IEnumerable<string> Subset(int index, int length)
{
for (int i = index; i < index + length;
i++)
{
yield return names[i];
}
}
}
}


Hello
World
Tubular Bells
Hergest Ridge
Ommadawn
Platinum

reverse
Platinum
Ommadawn
Hergest Ridge
Tubular Bells

subset
Ommadawn
Platinum
Cross, move 0
Circle, move 1
Cross, move 2
Circle, move 3
Cross, move 4
Circle, move 5
Cross, move 6
Circle, move 7
Cross, move 8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: