Freigeben über


Compilerfehler CS0826

Aktualisiert: November 2007

Fehlermeldung

Es wurde kein optimaler Typ für das implizit typisierte Array gefunden.
No best type found for implicitly typed array.

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

Referenz

Implizit typisierte lokale Variablen (C#-Programmierhandbuch)