2011-11-22 3 views
0

어젯밤에 다른 클래스의 참조를 얻은 다음 하위 클래스에 전달해야하는 클래스를 작성했습니다. 우선 부모 단지 참조 정의 :이상한 새 refrence 생성 메시지

Classes.Workspace.Manager Workspace; 

을 그리고하여 새 WidgetManager 다음 통과 작업 공간을 정의

Classes.Widget.Manager WidgetManager = new Classes.Widget.Manager(); 

public Widget() 
{ 
    WidgetManager.Workspace = Workspace; 
} 

그러나 그것은 나에게 Workspace에 대한 새로운 기준을 만드는 오류를 보여 주었다. 나는 다른 모든 클래스에 대해 이것을 수행하여 참조 Workspace 값을 정의한 다음 관련 데이터를 전달하여 하위 클래스에 제공하기 때문에 나에게 이상했다. 어쨌든, 나는 그것을 재정의하고 일하러 갔다. 하지만 오늘은 프로젝트를 열었을 때 Workspace 변수의 새로운 객체 생성 부분을 삭제하여이 문제를 확인했습니다. 모든 주제가 여기에 있습니다. 그 이유는 절대로 다시 오류를주지 않았고 완벽하게 실행 되었기 때문입니다. 나는 그 반응이 오늘 전에 어떻게 있었는지 궁금하다.

감사합니다.

확인 짧은이 나에게 오류 준

:

Classes.Workspace.Manager Workspace; 

하지만이 없습니다 :

Classes.Workspace.Manager Workspace = new Classes.Workspace.Manager(); 

나는 단지 그것을 얻을이 클래스에서 작업 영역을 사용하지 않는를 이 클래스 밖의 다른 작업 공간에 대한 참조.

+1

구체적으로 작성하십시오. 오류가 정확히 무엇을 말합니까? 어떤 종류의 오류입니까? – SLaks

+0

Workspace 클래스의 새 참조를 만드는 중 오류가 발생했습니다. 나는이 뜻 :'Classes.Workspace.Manager Workspace = new Classes.Workspace.Manager();'. – MahanGM

+0

** ** 오류는 무엇이라고 말합니까? 어떤 종류의 오류입니까? – SLaks

답변

1

Classes.Workspace.Manager Workspace; 작업 공간을 초기화하지 않으면 인스턴스가 없습니다. 나중에 수행 한 것처럼 new으로 초기화해야합니다.

오류가 발생하면 개체를 초기화하지 않았으며 인스턴스가없는 참조입니다. new 및 초기화를 추가 한 후에 작동합니다. 인스턴스가 실제로 생성되는 방법이기 때문입니다. 더 이상 null/참조 해제되지 않습니다.

+0

나는 이것을 안다.알다시피, 언젠가는 다른 클래스의 인스턴스를 너무 많이 생성하기 때문에 StackOverflowException이 발생합니다. 다음으로, 나는 그들 중 대부분이 다른 클래스에서 참조되어야하기 때문에 인스턴스화 할 필요가없는 변수에서'new'를 삭제했습니다. 그게 문제 야. 오, 그건 그렇고, 내가 새 인스턴스를 정의하지 않고 어떻게 프로그래밍 할 수 있다고 생각하니? :) 나는 n00b가 아니다. – MahanGM

+0

stackoverflow에서 여러 수준의 프로그래머가 있습니다. 전의 가정을하지 않습니다 :) 단지이 문제를 방황하는 사람뿐 아니라 다른 사람에게도 분명합니다. 미안해 이것이 너를 도와주지 않는다면! –

+0

아니요. 나는 화를 내고 싶지 않았지만, 아무도이 주제를 다룰 때부터 아무 도움도받지 못했기 때문에 나는 조금 nerv0us를 얻었다. :) – MahanGM