2015-06-24 16 views
8

Jestem zdezorientowany z implementacją Static w VB.NET. W języku C# możemy stworzyć klasę statyczną i metody statyczne do napisania metod użytkowych dla naszej aplikacji.Implementacja metody statycznej w VB.NET

Teraz VB.NET pozwala nam stworzyć Module zamiast klasy statycznej. Jeśli tworzymy metodę w module, domyślnie staje się statyczna. Ale w mojej aplikacji, napisałem poniższy kod:

Public Class Utility 
    Public Shared Function GetValue() As String 
     // My code 
    End Function 
End Class 

Pisząc kod, jestem w stanie uzyskać dostęp do metody użytkową jako Utility.GetValue(). Ponieważ nie jest to klasa statyczna, powinienem utworzyć jej obiekt. Ale ta metoda jest dostępna zarówno dla klasy i obiektów Utility

Teraz moje pytania to:

  1. jest realizacja Zrobiłem może naruszyć żadnej z cech klasy statycznej że moduł dostarczyć?
  2. Jaka będzie różnica między tym a wdrożeniem modułu?
  3. Jeśli zamiast tego utworzę moduł, czy jego zakres będzie taki sam jak tej klasy? Chcę uzyskać dostęp do metody w całym projekcie, a także innych projektach, do których się odwołuje.

Próbowałem konsultacji wielu artykułów, ale nigdzie nie znaleziono dokładnych odpowiedzi. Proszę pomóż.

+1

Za kulisami funkcja publiczna w module jest konwertowana na wspólną funkcję klasy; To są te same rzeczy. Mimo że narzędzie można utworzyć instancję, ** nie można ** uzyskać dostępu do GetValue() poprzez wystąpienie narzędzia; nadal musiałbyś używać 'Utility.GetValue()'. –

+2

Główna różnica polega na tym, że w klasie można również mieć nieprzydzielonych członków w narzędziu (nie można jednak uzyskać dostępu do tych niewspółużytkowanych elementów z udostępnionych). Ale w odniesieniu do ** tylko ** współdzielonych członków, będzie to to samo, co użycie modułu. –

+0

Jestem również w stanie uzyskać dostęp do metody 'GetValue()' dla instancji obiektów. Tutaj powstaje moje zamieszanie. @Idle_Mind –

Odpowiedz

15

Moduł VB.NET to klasa statyczna. Kompilator obsługuje to za Ciebie. Każda metoda i właściwość na niej jest static (Shared).

Klasa z statycznym członkiem (udostępnionym) jest dokładnie taka sama: klasa ze statycznym (udostępnionym) członkiem. Nie musisz tworzyć jego instancji, aby uzyskać dostęp do metody statycznej (Udostępnione), ale możesz dostać się do dowolnego jej członków instancji.

Można także zdefiniować Sub New() w module, który staje się statycznym konstruktorem dla modułu. Przy pierwszej próbie wywołania elementu w module zostanie wywołany konstruktor statyczny w celu zainicjowania klasy statycznej.

Powiązane problemy