VB.NET에서 클래스를 정적으로 표시
최근 질문 및 답변 에서 언급했듯이 정적 클래스에서 상속 할 수 없습니다. VB.NET 내부의 정적 클래스와 함께 사용되는 규칙을 어떻게 적용합니까? 프레임 워크는 C #과 VB간에 호환되므로 클래스를 정적으로 표시하는 방법이있을 수 있지만 방법이없는 것 같습니다.
모듈 == 정적 클래스
상속 할 수없는 클래스 만 원하면 NotInheritable 클래스를 사용하십시오. 그러나 정적 / 공유되지 않습니다. 모든 메서드, 속성 및 멤버를 Shared로 표시 할 수 있지만 컴파일러에 의해 적용되지 않기 때문에 C #의 정적 클래스와 엄격하게 동일하지는 않습니다.
C # 정적 클래스에 해당하는 vb.net을 정말로 원한다면 Module을 사용하십시오. 상속 될 수 없으며 모든 멤버, 속성 및 메서드는 정적 / 공유입니다.
거의 다 왔어. 인스턴스화도 방지해야합니다.
NotInheritable Class MyStaticClass
''' <summary>
''' Prevent instantiation.
''' </summary>
Private Sub New()
End Sub
Public Shared Function MyMethod() As String
End Function
End Class
- Shared는 정적 클래스의 메서드와 같습니다.
- NotInheritable은 봉인 된 것과 같습니다.
- Private New는 정적 클래스를 인스턴스화 할 수없는 것과 같습니다.
상속 할 수없는 클래스를 만들려는 경우 C #에서는 Sealed를 사용하고 VB.Net에서는 NotInheritable을 사용할 수 있습니다.
정적에 해당하는 VB.Net은 공유됩니다.
vb.net에서 정적 클래스를 만들 수 있습니다. 해결책은
Friend NotInheritable Class DB
Public Shared AGE As Integer = 20
End Class
AGE 변수는 공개 정적이므로 다음과 같이 다른 코드에서 사용할 수 있습니다.
Dim myage As Integer = DB.AGE
친구 = 공개, NotInheritable = 정적
CLR 관점에서 C # 정적 클래스는 "봉인"및 "추상"클래스입니다. 추상이기 때문에 인스턴스를 만들 수 없으며 봉인되어 있기 때문에 상속 할 수 없습니다. 나머지는 컴파일러 마법입니다.
참고 URL : https://stackoverflow.com/questions/135841/marking-a-class-static-in-vb-net
'developer tip' 카테고리의 다른 글
누수 추상화의 의미? (0) | 2020.10.07 |
---|---|
PIL을 사용하여 이미지에 텍스트 추가 (0) | 2020.10.07 |
언제 힙을 사용하고 싶습니까? (0) | 2020.10.07 |
.NET DLL에 git 커밋 해시 포함 (0) | 2020.10.07 |
ES6로 두 개체 병합 (0) | 2020.10.07 |