У меня следующая проблема с моим кодом (я делаю простой связанный список) .
Ошибка CS1579
Инструкция
foreach
не может работать с переменными типаProgram
, посколькуProgram
не содержит определения общедоступного экземпляра дляGetEnumerator
.
Я пытался сделать foreach
, чтобы сравнить, какой из элементов был второстепенным (а затем устранить его). Но я получаю ошибку, что List имеет тип Program
, я не могу сделать foreach
.
Мой код:
class Program
{
private Nodo primero;
private int size;
public Program() {
this.primero = null;
this.size = 0;
}
public void AddNodo(int data) //Para el primer programa: Agregar los datos con su nodo
{
Nodo nuevo = new Nodo(data);// agregar nodo
nuevo.next = primero; //para ir al primer nodo
primero = nuevo; //coloca el elemento de primero
size++;
}
public int Size() { //Para el primer programa, el size de la list
return size;
}
public void listar() //Para el primer programa, para listar los elementos
{
Nodo actual = primero;
while (actual!=null)
{
Console.Write("[" + actual.data +"]->");
actual = actual.next;
}
}
public void DeleteList(int s) //para eleminar en una posicion especifica
{
Nodo anterior = primero;
Nodo actual = primero;
int dat = 0;
if (s>0)
{
while (dat!= s && actual.next !=null)
{
anterior = actual;
actual = actual.next;
dat++;
}
anterior.next = actual.next;
}
}
static void Main(string[] args)
{
case 1: //lista simplemente enlazada
Program Lista = new Program();
//Lista.ListaVacia();
Lista.AddNodo(5); //Para agregar el elemento; el ultimo elemento de la lista
Lista.AddNodo(85);
Lista.AddNodo(34);
Lista.AddNodo(56);
Lista.AddNodo(9);
Lista.AddNodo(12);// el primer elemento de la lista; cabeza o head
Lista.listar();
//Lista.DeleteList();
Console.WriteLine(" ");
Console.WriteLine("Size " + Lista.Size()); //para el size
foreach (var item in Lista) //aqui es que me aparece el error
{
}
}
}
}
Для того, чтобы ты смог использовать foreach, это должен быть класс, который он получал в наследство бы от ICollection (и какая-то mГЎs), но что это не случай, sГіlo у тебя есть объект.
, Хотя ты назовешь это Списком, - как будто ты это объявил типа string, string не может быть использованным в прямой части IN foreach.
Collection, Arrays, List. Эти типы, если они могут быть использованными в foreach. Если у тебя есть какое-то сомнение, прокомментируй мне это и мы видим, могу ли я помогать тебе.
Приветствие!!
Чтобы мочь использовать цикл foreach
ты нуждаешься в том, чтобы осуществить интерфейс IEnumerable
, так как цикл нуждается в , что у класса был один mГ©todo GetEnumerator()
, чтобы это призывать и asГ - мочь повторять на элементах.
, Поскольку я это вижу, и так как estГЎs делая соединенный список, ты recomendarГ - во что-то asГ-:
public IEnumerable<Nodo> Nodos
{
List<Nodo> l = new List<Nodo>();
Nodo actual = this.primero;
do
{
l.Add(actual);
actual = actual.next;
}
while (actual != null);
return l;
}
В конце концов podrГЎs повторять следующего способа:
foreach (var item in Lista.Nodos)
{
...
}