Avertissement du compilateur (niveau 1) CS1060

Mise à jour : novembre 2007

Message d'erreur

Utilisation éventuelle d'un champ non assigné 'nom' Les variables d'instance struct sont initialement non assignées si struct n'est pas assigné.
Use of possibly unassigned field 'name'. Struct instance variables are initially unassigned if struct is unassigned.

Les membres struct sont initialisés à leur valeur par défaut si vous ne les initialisez pas explicitement. La valeur par défaut des types de classe (et des autres types de référence) est null. Si la classe n'est pas initialisée avant chaque tentative d'accès, NullReferenceException est levée lors de l'exécution. Le compilateur ne peut pas déterminer définitivement si le membre de classe sera initialisé ou non et CS1060 constitue donc un avertissement et non une erreur.

Pour corriger cette erreur

  • Fournissez un constructeur pour le struct qui initialise tous ses membres.

Exemple

Le code suivant génère l'avertissement CS1060 car le type de classe U est membre de struct S mais n'est jamais initialisé.

// cs1060.cs
namespace CS1060
{    
    public class U
    {
        public int i;
    }

    public struct S
    {
        public U u;
        // Add constructor to correct the error.
        //public S(int val)
        //{
        //    u = new U() { i = val };
        //}
    }
    public class Test
    {
        static void Main()
        {
            S s;
            s.u.i = 5;  // CS1060

            //Try these lines instead, and uncomment the constructor in S
            // S s = new S(0);
            // s.u.i = 5;
                 
        }
    }  
}

Voir aussi

Référence

Structures (Guide de programmation C#)