2009-08-06 6 views
4

저는 지난 6 년 동안 C#에서 프로그래밍을 해왔습니다. 이제는 VB.net에 젖어 들었습니다.Visual Basic 모듈 v 싱글 톤

내가 작업중인 코드 기반은 일부 모듈을 사용합니다. 나에게 모듈은 싱글 톤처럼 보입니다. 하나만 존재합니다. 그것은 네임 스페이스 내부 어디에서나 호출 될 수 있습니다.

여기에 누락 된 것이 있습니까? VB는 싱글 톤이 구조화 된 일반적인 방법 (개인 생성자/공용 인스턴스 필드)을 지원하지 않습니까?

답변

6

모듈은 싱글 톤이 아닙니다. C#의 정적 클래스에 훨씬 비슷합니다. 코드를 역 컴파일하면 매우 유사한 구조를가집니다 (모듈에는 추가 속성이 있음).

C#을 정적 클래스와 VB.Net 모듈이다 사이의 주요 차이점 ...

  • 은 모듈의 방법으로 정적/공유 한정자를 추가 할 필요가 없습니다. 이 모듈은 기본적으로 공유되며이 모듈을 변경할 수 없습니다.
  • 모듈이 가져온 네임 스페이스에 있으면 해당 모듈의 모든 메서드를 자격없이 사용할 수 있습니다. 내가 잘못 본게 아니라면
+0

기본적으로 모듈을 사용하면 정적 (C#에서 필요하게 될) 내부의 모든 것을 선언하는 것과 같습니다. 그 차이점과 싱글 톤의 차이점은 싱글 톤이 상속 (파생 클래스 또는 인터페이스에서)과 다형성을 지원한다는 것입니다. 모듈의 위치는 어디입니까? 나는 그걸 전부 다 정리하려고 애 쓰고있어. –

+0

@Joel, 일종의. 모듈에 대해 기억해야 할 중요한 점은 인스턴스가 없다는 것입니다. 내부적으로 C# 정적 클래스와 같은 정적 메서드 집합으로 컴파일됩니다. 가장 큰 차이점은 포함 모듈을 사용할 수 있으면 전역 이름 범위에 추가된다는 것입니다. – JaredPar

3

을 (그들은 일반 회원을 가질 수 있지만) C#에서

  • 정적 클래스 모듈을 할 수없는 일반 수 있습니다, 비주얼 베이직 모듈은 정적 클래스와 같은 것입니다.

  • +1

    2 사이에는 미묘한 차이가 있지만 높은 수준에서는 동일합니다. – JaredPar