Массивы и кортежи

Содержание

Слайд 2

state = 2; return true; case 2: break; } return false;

state = 2;
return true;
case 2:

break;
}
return false;
}
string System.Collections.Generic.IEnumerator.Current
{
get
{
return current;
}
}
object System.Collections.IEnumerator.Current
{
get
{
return current;
}
}
Слайд 3

void IDisposable.Dispose() { } } } 2) public class MusicTitles {

void IDisposable.Dispose()
{
}
}
}
2)
public class MusicTitles
{
string[] names

= {
"Tubular Bells", "Hergest Ridge",
"Ommadawn", "Platinum" };
public IEnumerator GetEnumerator()
{
for (int i = 0; i < 4; i++)
{
yield return names[i];
}
}
Слайд 4

public IEnumerable Reverse() { for (int i = 3; i >=

public IEnumerable Reverse()
{
for (int i = 3; i

>= 0; i--)
{
yield return names[i];
}
}
public IEnumerable Subset(int index, int length)
{
for (int i = index; i < index + length; i++)
{
yield return names[i];
}
}
}
Слайд 5

3) var titles = new MusicTitles(); foreach (var title in titles)

3)
var titles = new MusicTitles();
foreach (var title in titles)
{
Console.WriteLine(title);
}
Console.WriteLine();
Console.WriteLine("обратная");


foreach (var title in titles.Reverse()) ,
{
Console.WriteLine(title);
}
Console.WriteLine();
Console.WriteLine("подмножество");
foreach (var title in titles.Subset(2,2))
{
Console.WriteLine(title);
}
Слайд 6

4) public class GameMoves { private IEnumerator cross; private IEnumerator circle;

4)
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("Крестик, ход {0}", move);
if (++move >= MaxMoves) yield break;
yield return circle;
}
}
Слайд 7

public IEnumerator Circle() { while (true) { Console.WriteLine("Нолик, ход {0}”, move);

public IEnumerator Circle()
{
while (true)
{
Console.WriteLine("Нолик, ход {0}”, move);


if(++move >= MaxMoves) yield break;
yield return cross;
}
}
}
5)
GameMoves game = new GameMoves();
IEnumerator enumerator = game.Cross();
while (enumerator.MoveNext())
{
enumerator = enumerator.Current as IEnumerator;
}
Слайд 8

6) Крестик, ход 0 Нолик, ход 1 Крестик, ход 2 Нолик,

6)
Крестик, ход 0
Нолик, ход 1
Крестик, ход 2
Нолик, ход 3


Крестик, ход 4
Нолик, ход 5
Крестик, ход 6
Нолик, ход 7
Крестик, ход 8
7)
public static Tuple Divide (int dividend, int divisor)
{
int result = dividend/divisor;
int reminder = dividend%divisor;
return Tuple.Create(result, reminder);
}
Слайд 9

8) Var result = Divide(5,2); Console.WriteLine("результат деления: (0), остаток: {1}", result.Item1,

8)
Var result = Divide(5,2);
Console.WriteLine("результат деления: (0), остаток: {1}",
result.Item1, result.Item2);
9)
public

class Tuple
10)
var tuple = Tuple.Create Tuple ("Stephanie", "Alina", "Nagel", 2009, 6, 2, 1.37,
Tuple.Create(52, 3490));
11)
Public class Person: IEquatable
{
public int Id {get; private set; }
public string FirstName {get; set;}
public string LastName {get; set;}
Слайд 10

public class Person: IEquatable { public int Id {get; private set;

public class Person: IEquatable
{
public int Id {get; private set; }


public string FirstName {get; set;}
public string LastName {get; set;}
public override string ToString()
{
return String.Format("{0}, {1} {2}", Id, FirstName, LastName);
}
public override bool Equals(object obj)
{
if(obj == null) throw new ArgumentNullException("obj");
return Equals(obj as Person);
}
public override int GetHashCode()
{
return Id.GetHashCode();
}
Слайд 11

public bool Equals(Person other) { if (other == null) throw new

public bool Equals(Person other)
{
if (other == null) throw

new ArgumentNullException("other");
return this.Id==other.Id && this.FirstName==other.FirstName &&
this.LastName == other.LastName;
}
}
12)
var janet = new Person {FirstName = "Janet”, LastName = "Jackson"};
Person [] persons1 = { new Person
{
FirstName = "Michael",
LastName = "Jackson"
},
janet
};
Слайд 12

Person[] persons2 = { new Person { FirstName = "Michael", LastName

Person[] persons2 = { new Person
{
FirstName = "Michael",

LastName = "Jackson"
},
janet
};
if (persons1 != persons2)
Console.WriteLine("разные ссылки");
13)
if ((persons1 as IStructuralEquatable).Equals(persons2,
EqualityComparer.Default))
{
Console.WriteLine("одинаковое содержимое");
}
14)
var t1 = Tuple.Create(1, "Stephanie");
var t2 = Tuple.Create(1, "Stephanie");
if (t1 != t2) Console.WriteLine("не одинаковое содержимое");
Слайд 13

15) if (t1.Equals(t2)) Console.WriteLine("одинаковое содержимое"); 16) class TupleComparer: IEqualityComparer { public

15)
if (t1.Equals(t2)) Console.WriteLine("одинаковое содержимое");
16)
class TupleComparer: IEqualityComparer
{
public new bool Equals(object

x, object y)
{
return x.EquaLs(y);
}
public int GetHashCode(object obj)
{
return obj.GetHashCode();
}