Share via


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

업데이트: 2007년 11월

오류 메시지

할당되지 않은 'name' 필드를 사용하고 있는 것 같습니다. 구조체를 할당하지 않으면 구조체 인스턴스 변수는 처음에 할당되지 않습니다.
Use of possibly unassigned field 'name'. Struct instance variables are initially unassigned if struct is unassigned.

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

이 오류를 해결하려면

  • 모든 멤버를 초기화하는 struct에 대한 생성자를 제공합니다.

예제

다음 코드에서는 클래스 형식 U가 struct 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;
                 
        }
    }  
}

참고 항목

참조

구조체(C# 프로그래밍 가이드)