Fordító figyelmeztetés (1. szint) CS1060

Esetleg nem hozzárendelt "név" mező használata. A szerkezetpéldány változói először nem lesznek hozzárendelve, ha a struktúra nincs hozzárendelve.

Ha nem inicializálja őket, a rendszer inicializálja a tagokat az alapértelmezett értékre. Az osztálytípusok (és más referenciatípusok) alapértelmezett értéke null. Ha az osztályt nem inicializálja a rendszer, mielőtt megpróbálna hozzáférni hozzá, futásidőben a rendszer elindítja az osztályt NullReferenceException . A fordító nem tudja véglegesen megállapítani, hogy az osztálytag inicializálva lesz-e vagy sem, ezért a CS1060 figyelmeztetés, nem pedig hiba.

A hiba kijavítása

  1. Adjon meg egy konstruktort, amely inicializálja az struct összes tagját.

Példa

Az alábbi kód azért hozza létre a CS1060-et, mert az osztálytípus U tagja az struct S osztálynak, de soha nem inicializálódik.

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

Lásd még