Erreur du compilateur CS1640
L’instruction foreach ne peut pas fonctionner sur des variables de type 'type', car elle implémente plusieurs instanciations de 'interface', essayez d’effectuer un cast en une instanciation d’interface spécifique
Le type hérite de deux instances d’IEnumerator<T> (ou davantage), ce qui signifie qu’il n’y a pas une énumération unique du type que foreach
pourrait utiliser. Spécifiez le type d’IEnumerator<T> ou utilisez une autre construction de bouclage.
Exemple
L’exemple suivant génère l’erreur 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 specifying the type of IEnumerable<T>
// foreach (int i in (IEnumerable<int>)new C()){}
return 1;
}
}
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour