Errore del compilatore CS0826

Impossibile trovare il tipo migliore per la matrice tipizzata implicitamente.

Tutti gli elementi di matrice devono essere dello stesso tipo o implicitamente convertibili allo stesso tipo secondo le regole di inferenza dei tipi utilizzate dal compilatore. Il tipo migliore deve essere uno dei tipi presenti nell'espressione di matrice. Gli elementi non saranno convertiti in un tipo nuovo ad esempio object. Per una matrice tipizzata implicitamente, il compilatore deve inferire il tipo di matrice in base al tipo di elementi assegnati.

Per correggere l'errore

  • Assegnare alla matrice un tipo esplicito.

  • Assegnare a tutti gli elementi di matrice lo stesso tipo.

  • Fornire cast espliciti per gli elementi che potrebbero essere la causa del problema.

Esempio

Nel codice seguente viene generato l'errore CS0826 perché gli elementi di matrice non sono tutti dello stesso tipo e la logica di inferenza dei tipi del compilatore non trova un solo tipo migliore:

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

Vedere anche

Riferimenti

Variabili locali tipizzate in modo implicito (Guida per programmatori C#)