Errore del compilatore CS0188

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile utilizzare l'oggetto 'this' prima che tutti i suoi campi vengano assegnati.
The 'this' object cannot be used before all of its fields are assigned to

Per poter chiamare un metodo in una struct, un costruttore deve assegnare prima tutti i campi contenuti nella struct.

Se questo errore viene visualizzato quando si tenta di inizializzare una proprietà in un costruttore di strutture, la soluzione è modificare il parametro del costruttore in modo da specificare il campo sottostante anziché la proprietà stessa. Le proprietà implementate automaticamente devono essere evitate nelle strutture perché non dispongono di campo sottostante e pertanto non possono essere inizializzate in alcun modo dal costruttore.

Per ulteriori informazioni, vedere Utilizzo di strutture (Guida per programmatori C#).

Esempio

Il seguente codice di esempio genera l'errore CS0188:

// CS0188.cs
// compile with: /t:library
namespace MyNamespace
{
    class MyClass
    {
        struct S
        {
            public int a;

            void Foo()
            {
            }

            S(int i)
            {
                // a = i;
                Foo();  // CS0188
            }
        }
        public static void Main()
        { }

    }
}

Vedere anche

Riferimenti

Strutture (Guida per programmatori C#)

Proprietà implementate automaticamente (Guida per programmatori C#)