CS1640 fordítóhiba

A foreach utasítás nem működik "type" típusú változókon, mert több példányos "interfészt" implementál, megpróbálkozhat egy adott felület példányosításával

A típus az IEnumerator<T> két vagy több példányától öröklődik, ami azt jelenti, hogy foreach a típusnak nincs egyedi felsorolása. Adja meg az IEnumerator<T> típusát, vagy használjon másik hurokszerkezetet.

Példa

A következő minta a CS1640-et hozza létre:

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