할당되지 않은 ‘name’ 필드를 사용하고 있는 것 같습니다. 구조체가 할당되지 않은 경우 구조체 인스턴스 변수도 처음에 할당되어 있지 않습니다.
명시적으로 초기화하지 않는 경우 구조체 멤버는 해당 기본값으로 초기화됩니다. 클래스 형식(및 다른 참조 형식)의 기본값은 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;
}
}
}
참고 항목
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET