Compilerfout CS1640

foreach-instructie kan niet worden uitgevoerd op variabelen van het type 'type' omdat er meerdere instantiëringen van 'interface' worden geïmplementeerd, probeer te casten naar een specifieke interface-instantiëring

Het type neemt over van twee of meer exemplaren van IEnumerator<T>, wat betekent dat er geen unieke opsomming is van het type dat foreach kan worden gebruikt. Geef het type IEnumerator<T> op of gebruik een andere lusconstructie.

Opmerking

In het volgende voorbeeld wordt CS1640 gegenereerd:

// 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;  
    }  
}