Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Оператор foreach не работает с переменными типа "тип1", так как "тип2" не содержит открытого определения для "идентификатор"
Чтобы иметь возможность выполнить итерацию коллекции с помощью оператора foreach, коллекция должна соответствовать следующим требованиям:
- Его тип должен включать открытый метод
GetEnumerator
без параметров со следующим типом возвращаемого значения: класс, структура или тип интерфейса. - Тип возвращаемого значения метода
GetEnumerator
должен содержать открытое свойствоCurrent
и открытый методMoveNext
без параметров с типом возвращаемого значения Boolean.
Следующий пример приводит к ошибке CS1579, так как класс MyCollection
не содержит открытый метод GetEnumerator
:
// 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.Length);
}
public int Current => 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);
}
}
}
Отзыв о .NET
.NET — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: