Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Messaggio di errore
L'istruzione foreach non può funzionare con variabili di tipo 'tipo' perché implementa più creazioni di istanza di 'interfaccia'; provare a eseguire il cast su una creazione di istanza di interfaccia specifica.
foreach statement cannot operate on variables of type 'type' because it implements multiple instantiations of 'interface', try casting to a specific interface instantiation
Il tipo eredita almeno due istanze di IEnumerator<T>. Non esiste quindi un'unica enumerazione del tipo che possa essere utilizzata da foreach. Specificare il tipo di IEnumerator<T> oppure utilizzare un altro costrutto di ciclo.
Esempio
Il seguente codice di esempio genera l'errore CS1640:
// CS1640.cs
using System;
using System.Collections;
using System.Collections.Generic;
public class C : IEnumerable, IEnumerable<int>, IEnumerable<string>
{
IEnumerator<int> IEnumerable<int>.GetEnumerator()
{
yield break;
}
IEnumerator<string> IEnumerable<string>.GetEnumerator()
{
yield break;
}
IEnumerator IEnumerable.GetEnumerator()
{
return (IEnumerator)((IEnumerable<string>)this).GetEnumerator();
}
}
public class Test
{
public static int Main()
{
foreach (int i in new C()){} // CS1640
// Try specifing the type of IEnumerable<T>
// foreach (int i in (IEnumerable<int>)new C()){}
return 1;
}
}