2013-08-05 2 views
6

ich einen alten VB6-Code gegrast und ich sah so etwas wie diesesVB6 Schlüsselwort Set was bedeutet das?

Set AST = CreateObject("ADODB.Stream") 

ich Erfahrung mit VB6 haben und VB.NET, aber ich dieses Schlüsselwort nie Set zuvor in meinem VB6-Projekte verwenden. Ich recherchieren viel im Internet, was die Verwendung von Set ist und was ich weiß, nur ist die Verwendung in Properties die nur ich in VB.NET weiß

Public Property myProperty As String 
    Get 
     Return _myProperty 
    End Get 
    Set(value as String) 
     _myProperty = value 
    End Set 
End Property 

und ich denke, Set verwendet wird anders auf dem Code oben . Was ist der Unterschied der beiden Ansätze? Ich will wissen, was macht die Set

Antwort

7

Set in VB6 tut, ist eine neue Referenz auf die AST Variablen zugewiesen wird, anstatt 's-Eigenschaft Default Wert (von AST referenziert das Objekt derzeit) zuweisen.


Es gibt nicht viel VB 6-Dokumentation um auf dem Netz, aber einige Hilfe für VB.Net noch die älteren Weisen verweist.

Siehe Default Property Changed for Visual Basic 6 Users:

In Visual Basic 6.0 Standardeigenschaften sind auf Objekte unterstützt. Bei einem Label-Steuerelement ist beispielsweise Caption die Standardeigenschaft, und die beiden Zuweisungen im folgenden Beispiel sind äquivalent.

Dim lbl As Label 
lbl = "Important" 
lbl.Caption = "Important" 

Während Standardeigenschaften in das Schreiben von Visual Basic-Code eine bestimmte Menge an Stenografie ermöglichen, haben sie mehrere Nachteile:

...

  • Standardeigenschaften machen die Set-Anweisung notwendig in der Visual Basic Sprache. Das folgende Beispiel zeigt, wie Set benötigt wird, um anzugeben, dass ein Objektverweis und keine Standardeigenschaft zugewiesen werden soll.
Dim lbl1 As Label, lbl2 As Label 
lbl1 = "Saving" ' Assign a value to lbl1's Caption property. 
lbl2 = lbl1  ' Replace lbl2's Caption property with lbl1's. 
Set lbl2 = lbl1 ' Replace lbl2 with an object reference to lbl1. 

Also, in VB.Net, Let und Set obsolet geworden (in der Tat, Let war schon ziemlich veraltet in VB 6), da die Sprachregeln geändert. Eine Zuordnung A = B, wenn A eine Referenz ist, weist immer eine neue Referenz zu A zu.


MarkJ hat in den Kommentaren, Links zu den älteren VB6 Dokumentation geliefert.

+0

danke für eine wunderbare Erklärung –

+0

Nicht völlig irrelevant: Standardeigenschaften existieren immer noch in VB.NET, aber nur für indizierte Eigenschaften. Zum Beispiel können Sie mit Standardeigenschaften in .NET 'myList (index)' anstelle von 'myList.Item (index)' schreiben. –

+1

@StevenLiekens - das ist in der Seite abgedeckt, mit der ich verlinkt bin - es deckt Standardeigenschaften für VB 6 und .NET ab und hebt die Unterschiede hervor, z. Msgstr "" "In Visual Basic 2008 werden Standardeigenschaften nur unterstützt, wenn sie Argumente verwenden." Ich wollte meine Antwort auf das 'Set' für VB classic konzentrieren. –