2010-05-18 6 views
0

안녕하세요는 메인 부에 개시되어있는 programa, 그것이 어떤 코드를 실행 있고 그 코드 후에는베스트 사용()

System.Windows.Forms.Application.Run(General) 

을 사용하여 폼을 여는 일반 형태뿐만 아니라 클래스, 그래서 사용의 무엇 장점 또는 단점 궁금해 :

System.Windows.Forms.Application.Run(General) 

에서

Dim gen as general 
System.Windows.Forms.Application.Run(gen) 

대를 먼저 클래스의 이름을 사용하여 양식을 열고 인스턴스 변수를 개체 변수로 선언하는 것이 가장 좋습니다.

지금까지는 아무런 문제없이 첫 번째 방법을 사용했습니다.

의견을 보내 주셔서 감사합니다.

답변

3

예, 첫 번째 코드 스 니펫은 OOP purists에게 shivers를 제공합니다. Application.Run() 양식 양식이 필요하며 형식 양식을 전달하고 있습니다. 이것이 가능한 것은 시대 착오적 인 것이 VB6에서 이월 된 것입니다. 프로그래머가 유형과 객체의 차이를 이해하지 못하게하는 것은 매우 나쁜 스타일입니다. 객체 지향 프로그래밍에 앞서 이해하는 것이 중요합니다. 스레드를 사용하기 시작하면 매우 치명적입니다.

두 번째 스 니펫은 작동하지 않는다는 점을 제외하고는 필요한 것에 더 가깝습니다. 초기화되지 않은 개체를 Run()에 전달합니다. 수정 :

Dim gen as General = New General() 
System.Windows.Forms.Application.Run(gen) 

또는 VB.NET 구문을 이용 복용 :

Dim gen as New General 
System.Windows.Forms.Application.Run(gen) 

을 또는 당신은 실제로 Main 메서드에서 개체를 필요가 없습니다 이후 :

System.Windows.Forms.Application.Run(New General()) 
+0

좋습니다. 작동하기 때문에 작동하지만 잘못된 프로그래밍 스타일입니다. 그러나이 오류를 사용하는 데 가능한 한 어떤 교섭이 있습니까? 감사합니다. !!!! – carlos

+0

글쎄, 그것은 오류가 아닙니다. 내 응용 프로그램 기능은 명시 적으로 VB6 프로그래머가 VB.NET에서 속도를 높이는 데 도움이됩니다. Form1.InvokeRequired는 작업 스레드에서 사용될 때 항상 False를 반환하는 큰 결과를 언급했습니다. VB6 프로그래머가 스레딩 작업을 제대로 수행 할 수 없게 만듭니다. –

+0

의견을 보내 주셔서 감사합니다 !! – carlos

1

마지막 스 니펫에서는 Run() 메서드에 대한 null 참조를 전달합니다. 먼저 폼의 인스턴스를 만드는 것을 잊지 마십시오.

+0

아, 네, 올바른 Dim general as New General – carlos