2016-05-04 11 views
1
Static i as integer 

Was wird ich sein, bevor ich einen Wert zuweisen.Worin initialisiert vb6 eine statische Ganzzahl?

Es scheint nur Null (0) zu sein, aber ich wollte das bestätigen.

+0

Gerade falls es nicht klar ist, 'Static' in VB6 hat eine ganz andere Bedeutung von seiner Bedeutung in .Net. Eine statische Variable ist eine lokale Variable, die ihren Wert zwischen Methodenaufrufen behält. Mit anderen Worten, es hat den Gültigkeitsbereich einer lokalen Variablen, aber die Lebensdauer einer Variablen auf Modulebene. – BobRodes

+1

@BobRodes Es wird in genau der gleichen Weise (https://msdn.microsoft.com/en-us/library/z2cty7t8.aspx) in VB.NET verwendet. Sie denken wahrscheinlich [C#] (https://msdn.microsoft.com/en-us/library/98f28cdx.aspx), aber dann ist es nicht korrekt, die Verwendung von Schlüsselwörtern in zwei verschiedenen Sprachen zu vergleichen oder anstelle von ".NET" zu verwenden "C#". – GSerg

+0

@GSerg Ganz richtig, ich stehe korrigiert. – BobRodes

Antwort

3

Variablen aller VB-Datentypen erhalten beim Start der Prozedur ihren jeweiligen Standardwert.

Dies schließt alle Zahlen auf Null initialisiert, und alle anderen Datentypen zu ihrem Geschmack von Null (vbNullString für Streicher, nicht genau das gleiche wie eine leere Zeichenfolge "", False für booleans, Empty für Varianten und Nothing für Objekte).

+0

Die Debug-Anweisung '? vbNullstring = "" 'ergibt" True ". Also vielleicht nicht genau so wie eine leere Zeichenkette, in dem Sinne, dass eine Konstante nicht genau dasselbe ist wie ihr Wert. Aber für alle praktischen Zwecke würde ich sagen, dass sie genau gleich sind, da sie im Code austauschbar sind. – BobRodes

+3

@BobRodes In VB '=' ergibt 'True' nicht nur dann, wenn die beiden Dinge gleich * sind, sondern auch, wenn sie zu etwas anderem gezwungen werden können, das als gleich betrachtet werden kann. Z.B. '? Falsch = 0' oder '? False = Empty "geben alle" True ", obwohl sie nicht gleich sind, sondern alle [Falsy] sind (https://developer.mozilla.org/en/docs/Glossary/Falsy). 'vbNullString' ist jedoch anders, weil es den gleichen Typ wie' '' '(' String') hat, und sie sind eigentlich das * selbe *, wenn Sie nur ihren Inhalt vergleichen wollen, aber manchmal [möchten Sie mehr wissen ] (http://stackoverflow.com/a/20909528/11683). – GSerg

+1

Es kann einen Unterschied in den Ergebnissen geben, die Sie erhalten, wenn Sie 'vbNullString' vs.' "" an einige Methoden, Eigenschaften usw. übergeben. In einigen Fällen kann die Übergabe von 'vbNullString' sogar eine Nullzeiger-Ausnahme verursachen. – Bob77

3

According to Microsoft

Normalerweise in Visual Basic, wenn eine statische Variable innerhalb einer Funktion oder Sub-Prozedur deklariert wird, wird es auf 0 (numerische Datentyp) initialisiert oder eine leere Zeichenfolge "" (string-Datentyp), standardmäßig.

Also ja, Sie können sicher sein, dass der Standardwert Null ist.

hoffe, das hilft

+0

VB6 Dokumentation auf MSDN, https://msdn.microsoft.com/en-us/library/aa243352(v=vs.60).aspx – jac