2011-11-14 3 views
0

소유자 나 액세스하려는 이벤트 나 속성이없는 Windows 양식이 있습니다.양식을 인스턴스화하고 변수에 할당하는 것과 인스턴스를 만드는 것의 차이점은 무엇입니까?

frmExample ex = new frmExample(); 
ex.ShowDialog(this); 

(new frmExample()).ShowDialog(this); 

가있을 것입니다 차이 메모리 할당 등의 측면에서 : 나는 양식을 열 수있는 두 가지 방법이있다? 거기에 어떤 영향, 찬반 양론이 있습니까? 개인적으로, 순진하게도 나는 두 번째 접근법을 선호합니다.

덕분에

답변

2

하나의 큰 차이점은() 형태로 인스턴스를 폐기 할 수 없을 것입니다. 당신은해야한다, 아니 ShowDialog(), Show()를 호출 할 때만 호출하면 자동입니다. 상용구 코드 :

using (var dlg = new frmExample()) { 
    if (dlg.ShowDialog() == DialogResult.Ok) { 
     // Access dlg properties 
     //... 
    } 
} 

양식이 자동으로 처리되지 않는 이유는이 스 니펫에서 볼 수 있습니다. 속성에 액세스 할 때 ObjectDisposedException을 생성 할 위험이 있습니다. 속성 액세스를 마친 후에는 직접 처리해야합니다. 을 사용하면 문을 사용하면 자동으로 예외가 발생합니다.

관련 문제