CS1579 de erro do compilador
Mensagem de erro
demonstrativo foreach não pode operar em variáveis do tipo 'tipo' porque 'type2' não contém uma definição de pública para 'identificador'
Para iterar por meio de uma coleção usando o foreach demonstrativo, a coleção deve atender aos seguintes requisitos:
Ele deve ser uma interface, classe ou struct.
Ele deve incluir um público GetEnumerator método que retorna um tipo.
O tipo de retorno deve conter uma propriedade pública denominada Currente um método público chamado MoveNext.
Para obter mais informações, consulte Como: Acessar uma classe de coleção com foreach (C# Programming Guide).
Exemplo
In this sample, foreach is not able to iterate through the collection because there is no publicGetEnumerator method in MyCollection.
O exemplo a seguir gera CS1579.
// CS1579.cs
using System;
public class MyCollection
{
int[] items;
public MyCollection()
{
items = new int[5] {12, 44, 33, 2, 50};
}
// Delete the following line to resolve.
MyEnumerator GetEnumerator()
// Uncomment the following line to resolve:
// public MyEnumerator GetEnumerator()
{
return new MyEnumerator(this);
}
// Declare the enumerator class:
public class MyEnumerator
{
int nIndex;
MyCollection collection;
public MyEnumerator(MyCollection coll)
{
collection = coll;
nIndex = -1;
}
public bool MoveNext()
{
nIndex++;
return(nIndex < collection.items.GetLength(0));
}
public int Current
{
get
{
return(collection.items[nIndex]);
}
}
}
public static void Main()
{
MyCollection col = new MyCollection();
Console.WriteLine("Values in the collection are:");
foreach (int i in col) // CS1579
{
Console.WriteLine(i);
}
}
}