Compiler Error CS0826

Es wurde kein optimaler Typ für das implizit typisierte Array gefunden.

Gemäß den vom Compiler verwendeten Rückschlussregeln müssen Arrayelemente alle denselben Typ aufweisen bzw. implizit in diesen Typ konvertierbar sein. Der optimale Typ muss einer der im Arrayausdruck vorhandenen Typen sein. Elemente werden nicht in einen neuen Typ wie object konvertiert. Bei implizit typisierten Arrays muss der Compiler den Arraytyp anhand des Typs der ihm zugewiesenen Elemente ableiten.

So beheben Sie diesen Fehler

  • Weisen Sie dem Array einen expliziten Typ zu.

  • Weisen Sie allen Arrayelementen denselben Typ zu.

  • Stellen Sie explizite Umwandlungen für die Elemente bereit, die das Problem verursachen könnten.

Beispiel

Der folgende Code führt zu Fehler CS0826, da die Arrayelemente unterschiedliche Typen aufweisen und die Rückschlusslogik des Compilers keinen einzelnen optimalen Typ finden kann:

// cs0826.cs  
public class C  
{  
    public static int Main()  
    {  
        var x = new[] { 1, "str" }; // CS0826  

        char c = 'c';  
        short s1 = 0;  
        short s2 = -0;  
        short s3 = 1;  
        short s4 = -1;  

        var array1 = new[] { s1, s2, s3, s4, c, '1' }; // CS0826  
        return 1;  
    }  
}  

Siehe auch

Implizit typisierte lokale Variablen