Re: Static

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Statische Variablen sind keinesfalls ein Ersatz für ein globalen Member.
Globale Member können an allen Stellen auf Modulebene geändert werden,
statische Variablen nicht. Eine statische Variable ist nur in der Methode
sichtbar in der sie deklariert wurde.

Welchen Fall wo man Static-Variablen nutzt könnte man nicht auch mit
globalen Variablen nachbilden? ^^
Das es logischerweise nicht identisch ist, das sollte ja klar sein.
Aber ich erinnere mich, dass ich früher nach dem "entdecken" der
static-variablen viele globalen Variablen in meinen Programmen damit
ersetzen konnte...und ich denke in dem Kontext konnte man meine Aussage
auch verstehen.

Lars,
eine statische Variable ist in der Methode in der sie deklariert gekapselt
und nur dort sichtbar. Ein globaler Member nicht und kann an mehreren
Stellen geändert werden. Es geht nicht darum, was man nachbilden kann,
sonderen darum das eine andere Funktionalität dahinter steckt. Vielleicht
solltest Du die Frage mal umdrehen. Wie kann ich /einen/ globalen Member in
/mehrere/ Static-Variablen ändern?
Bedenke Static ist "einmalig", sprich ich will gar nicht das eine andere
Methode meinen Inhalt ändern kann. Bei einem globalen Member ist das aber
möglich. Sicherlich kannst Du jede statische Variable in einen globalen
Member ändern, verlierst aber diese Funktionalität. Umgehrt geht es aber
nicht, ich kann nicht jeden globalen Member in eine staische Varaible
verwandeln.
\\\
Private gm As Integer
Private Sub Test1()
gm = 1
End Sub
Private Sub Test2()
gm = 2
End Sub
///
Und wie sieht das als Static-Version aus?
Und was machst Du aus?
\\\
Private Sub Test1()
Static gm As integer = 1
End Sub
Private Sub Test2()
Static gm As integer = 2
End Sub
///
Das?
\\\
Private gm1 As Integer
Private gm2 As Integer
Private Sub Test1()
gm1 = 1
End Sub
Private Sub Test2()
gm2 = 2
End Sub
///
Das nicht das Gleiche, den es könnte das auftreten:
\\\
Private Sub Test3()
gm1 = 3
gm2 = 3
End Sub
///
Bei staischen Variablen geht das nicht und vielleicht ist das auch so
gewollt. Hoffe Du siehst, das statische Variablen werder ein Ersatz für
globale Member sind und auch nicht umgedreht.
--
Gruß Scotty


.



Relevant Pages

  • MORE Win Socket trouble
    ... the class so that the first is always listening. ... ' The private collection used to hold the real data ... Public Sub Add ... Attribute Remove.VB_Description = "Removes a member from a Collection ...
    (microsoft.public.vb.winapi)
  • Re: Accessing private member via subclass
    ... public class Sub extends Super ... does not have access to the private members of 'Super'. ... "If the identifier does not name an accessible member field of type T, ...
    (comp.lang.java.programmer)
  • Re: Collection disappearing at run time
    ... the Tab so that it doesn't take any arguments. ... > Private _tabHeight As New Unit ... > Public Overrides Property HeightAs Unit ... > Protected Overrides Sub OnInit ...
    (microsoft.public.dotnet.framework.aspnet.buildingcontrols)
  • MAPI Emails from Access
    ... I realize this code is quite long, but could someone take a look at the sub ... Private Const mcERR_DOH = vbObjectError + 10000 ... Private mstStatus As String ... Dim db As Database, rs As Recordset ...
    (microsoft.public.access.formscoding)
  • Re: DC another Problem
    ... > Private PointsDraw As ClassPoints ... > Private Sub Command1_Click ... > Dim p As Classpoint ... > Public Property Let X ...
    (microsoft.public.vb.winapi.graphics)