나는 이 오류가 발생한 및 I& # 39 m, 잘 모르는 무슨뜻이냐믄?
>. 개체 참조입니다 설정되지 않은 객체를 인스턴스입니다.
Net 에서는 변수 값을 가지 유형 또는 참조입니다 추상형데이터타입. 같은 값을 유형은 프리미티브를 [정수] [1] 및 [불 (bool) 값들] [2] 또는 구조 (및 상속하므로 [시스템.발루티페] [3] 에서 찾을 수 있다). 불리언 변수들을 가질 때 기본값입니다 선언했다.
bool mybool;
//mybool == false
참조 유형을 없는 경우, 기본값입니다 선언했다.
class ExampleClass
{
}
ExampleClass exampleClass; //== null
클래스의 인스턴스를 사용할 경우 멤버 액세스하려는 nulll 참조입니다 어졌다면 you get a [시스템. 울레페렌스엑스티온] [4]. 이는 설정되지 않은 객체를 인스턴스입니다 동일합니까 객체 참조 .
이 코드는 다음과 같은 간단한 방법을 소개한다.
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()
{
}
}
이것은 매우 일반적인 오류 때문에 발생할 수 있는 모든 종류의 시작했다. 정말 그 근본 원인을 구체적인 시나리오를 따라 you& # 39, ve 발생했습니다.
호출 API 를 사용하는 경우 또는 null # 39 의 중요한 이겨낼 수 있는 방법을 통해 복귀하십시오 어졌다면 it& . 이런 식으로 누얼레페렌스엑스티온 그들위에 주된 방법은 수정할 수 있는 사용자가 볼 수 있는 안 됩니다.
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 유형: 기초, 자세한 내용은 # 39; d 추천합니까 I& 인컨텍스트 picking up 이 [MSDN 문서] CLR 통해 C # 또는 판독값 따라 하나의 6 저자 - 제프리 리히터. 또한, [예] [7] 체크아웃하려면 훨씬 복잡한 누얼레페렌스엑스티온 때 발생할 수 있습니다.
일부 팀은 리샤퍼 사용하여 이용할 수 있는 코드를 달기 강조표시하려면 null 제트브레인스 속성뿐 이 아닌) 것으로 나타났다.
[1]: http://msdn.microsoft.com/en-us/library/system.int32%28loband% 29.aspx [2]: 이아스파스 http://msdn.microsoft.com/en-us/library/system.boolean (로번드) [3]: 이아스파스 http://msdn.microsoft.com/en-us/library/system.valuetype (로번드) [4]: http://msdn.microsoft.com/en-us/library/system.nullreferenceexception% 28loband% 29.aspx
[7]: $ daniel_fortunovs_adventures_in_software_development/2009/04/23/net_event_invocation_thread_safety http://www.danielfortunov.com/software/
간단히 말해서 무슨뜻이냐믄. 를 액세스하려는 않고 객체를 인스턴스화하며 거잖나. 이 ", 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;
난 분명히 있다.