"객체 참조가 객체의 인스턴스로 설정되지 않음"은 무엇을 의미합니까?
이 오류가 표시되는데 무슨 뜻인지 잘 모르겠습니다.
개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
.NET의 변수는 참조 유형 또는 값 유형입니다.값 유형은 정수, 부울 또는 구조와 같은 기본 요소이며 시스템에서 상속되므로 식별할 수 있습니다.값 유형).선언된 부울 변수의 기본값은 다음과 같습니다.
bool mybool;
//mybool == false
선언된 참조 유형에는 기본값이 없습니다.
class ExampleClass
{
}
ExampleClass exampleClass; //== null
null 참조를 사용하여 클래스 인스턴스의 멤버에 액세스하려고 하면 시스템이 표시됩니다.Null ReferenceException입니다.객체 참조가 객체의 인스턴스로 설정되지 않은 것과 동일합니다.
다음 코드는 이를 재현하는 간단한 방법입니다.
static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();
returnedClass.AnotherExampleMethod(); //NullReferenceException here.
}
class ExampleClass
{
public ReturnedClass ExampleMethod()
{
return null;
}
}
class ReturnedClass
{
public void AnotherExampleMethod()
{
}
}
이는 매우 일반적인 오류이며 모든 종류의 이유로 인해 발생할 수 있습니다.근본 원인은 발생한 특정 시나리오에 따라 달라집니다.
API를 사용하거나 null을 반환할 수 있는 메서드를 호출하는 경우 이를 우아하게 처리하는 것이 중요합니다.위의 주 메서드는 NullReferenceException이 사용자에게 표시되지 않도록 수정할 수 있습니다.
static void Main(string[] args)
{
var exampleClass = new ExampleClass();
var returnedClass = exampleClass.ExampleMethod();
if (returnedClass == null)
{
//throw a meaningful exception or give some useful feedback to the user!
return;
}
returnedClass.AnotherExampleMethod();
}
위의 모든 내용은 .NET Type Fundamentals의 힌트일 뿐입니다. 자세한 내용은 C#을 통해 CLR을 선택하거나 동일한 저자인 제프리 리히터의 MSDN 기사를 읽는 것을 권장합니다.또한 NullReferenceException이 발생할 수 있는 경우의 예를 훨씬 더 복잡한 방법으로 확인하십시오.
Resharper를 사용하는 일부 팀은 JetBrain 속성을 사용하여 코드에 주석을 달아 null이 예상되지 않는 부분을 강조합니다.
간단히 말해서, 그것은..개체를 인스턴스화하지 않고 액세스하려고 합니다.먼저 인스턴스화하려면 "new" 키워드를 사용해야 합니다. 즉, 인스턴스를 만듭니다.
예:
public class MyClass
{
public int Id {get; set;}
}
MyClass myClass;
myClass.Id = 0; <----------- An error will be thrown here.. because myClass is null here...
다음을 사용해야 합니다.
myClass = new MyClass();
myClass.Id = 0;
제가 분명히 말했길 바랍니다.
쉽게 얻을 수 있는 또 다른 방법:
Person myPet = GetPersonFromDatabase();
// check for myPet == null... AND for myPet.PetType == null
if ( myPet.PetType == "cat" ) <--- fall down go boom!
직설적으로 말해서는 안 되지만 그것은 정확히 말하는 것을 의미합니다.개체 참조 중 하나가 NULL입니다.NULL'd 개체의 속성 또는 메서드에 액세스하려고 하면 이 메시지가 나타납니다.
당신이 이런 짓을 했다는 뜻입니다.
Class myObject = GetObjectFromFunction();
하지도 않고,
if(myObject!=null)
은 해보세요.myObject.Method();
수업이 있는 경우:
public class MyClass
{
public void MyMethod()
{
}
}
그리고 난 다음에,
MyClass myClass = null;
myClass.MyMethod();
두 번째 줄은 참조 유형 개체의 메서드를 호출하기 때문에 이 예외를 발생시킵니다.null
(즉, 호출을 통해 인스턴스화되지 않았습니다.myClass = new MyClass()
)
대부분의 경우 개체에 값을 할당하려고 할 때 값이 null이면 이러한 예외가 발생합니다.이 링크를 확인하십시오.
자기 학습을 위해서, 당신은 체크 조건을 넣을 수 있습니다.맘에 들다
if (myObj== null)
Console.Write("myObj is NULL");
이 오류는 무엇을 의미합니까?개체 참조가 개체의 인스턴스로 설정되지 않았습니다.
정확히 말하면, 당신은 null 객체를 적절하게 참조된 객체인 것처럼 사용하려고 합니다.
언급URL : https://stackoverflow.com/questions/779091/what-does-object-reference-not-set-to-an-instance-of-an-object-mean
'it-source' 카테고리의 다른 글
Eclipse Juno에서 "빠른 액세스" 항목 제거 (0) | 2023.05.26 |
---|---|
Xcode는 각 키 입력 후에도 스토리보드를 계속 빌드합니다. (0) | 2023.05.26 |
==와 동등한 값 사이의 C# 차이() (0) | 2023.05.26 |
명명된 튜플과 명명된 튜플의 차이점은 무엇입니까?튜플? (0) | 2023.05.26 |
"빌드 앤 런" 없이 아이폰 시뮬레이터를 시작할 수 있습니까? (0) | 2023.05.26 |