다음을 통해 공유


컴파일러 경고(수준 1) CS1060

할당되지 않은 ‘name’ 필드를 사용하고 있는 것 같습니다. 구조체가 할당되지 않은 경우 구조체 인스턴스 변수도 처음에 할당되어 있지 않습니다.

명시적으로 초기화하지 않는 경우 구조체 멤버는 해당 기본값으로 초기화됩니다. 클래스 형식(및 다른 참조 형식)의 기본값은 null입니다. 액세스 시도 전에 클래스가 초기화되지 않은 경우 런타임에 NullReferenceException이 throw됩니다. 컴파일러에서 클래스 멤버가 초기화될지 여부를 명확하게 확인할 수 없으므로 CS1060은 오류가 아니라 경고입니다.

이 오류를 해결하려면

  1. 해당 멤버를 모두 초기화하는 struct에 대한 생성자를 제공합니다.

예시

클래스 형식 Ustruct S의 멤버이지만 초기화되지 않았으므로 다음 코드에서는 CS1060을 생성합니다.

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

참고 항목