developer tip

VB.NET에서 클래스를 정적으로 표시

copycodes 2020. 10. 7. 07:48
반응형

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는 정적 클래스를 인스턴스화 할 수없는 것과 같습니다.

참조 :
MSDN-정적 클래스 및 정적 클래스 멤버


상속 할 수없는 클래스를 만들려는 경우 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