2013-08-05 14 views
6

Ho passando in rassegna un vecchio codice VB6 e ho visto qualcosa di simileParola chiave VB6 Imposta cosa significa?

Set AST = CreateObject("ADODB.Stream") 

Ho esperienza con VB6 e VB.NET, ma non ho mai utilizzare questa parola chiave Set prima nei miei progetti VB6. Ho fatto una ricerca molto in internet che cosa è l'uso di Set e quello che so è solo l'uso in Properties che è solo che conosco in VB.NET

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

e penso Set viene utilizzato in modo diverso sul codice di cui sopra . Qual è la differenza tra i due approcci? Voglio sapere che cosa fa il Set fare in VB6

risposta

7

Set è l'assegnazione di un nuovo riferimento alla variabile AST, anziché assegnare un valore (l'oggetto attualmente fa riferimento AST) 's proprietà predefinita.


Non c'è molto VB 6 documentazione giro sul web, ma alcuni dei aiuto per VB.Net fa ancora riferimento ai vecchi modi.

Vedi Default Property Changed for Visual Basic 6 Users:

In Visual Basic 6.0, le proprietà di default sono supportati su oggetti. Su un controllo Label, ad esempio, Caption è la proprietà predefinita e le due assegnazioni nell'esempio seguente sono equivalenti.

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

Mentre proprietà predefinite consentono una certa quantità di stenografia in scrittura di codice Visual Basic, hanno diversi svantaggi:

...

  • proprietà predefinite rendere l'istruzione Set necessario nel linguaggio Visual Basic. L'esempio seguente mostra come Set è necessario per indicare che un riferimento a un oggetto, piuttosto che una proprietà predefinita, deve essere assegnato.
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. 

Così, in VB.Net, Let e Set diventato obsoleto (in realtà, Let era già praticamente obsoleta in VB 6) perché le regole della lingua cambiati. Un'assegnazione A = B, se A è un riferimento, assegna sempre un nuovo riferimento a A.


MarkJ ha fornito i collegamenti alla documentazione VB6 anziani nei commenti.

+0

grazie per una spiegazione meravigliosa –

+0

Non completamente irrilevante: le proprietà predefinite esistono ancora in VB.NET, ma solo per le proprietà indicizzate. Ad esempio, le proprietà predefinite in .NET consentono di scrivere 'myList (index)' invece di 'myList.Item (index)'. –

+1

@StevenLiekens - che è coperto nella pagina a cui mi sono collegato - copre le proprietà predefinite sia per VB 6 che per .NET e evidenzia le differenze, ad es. "In Visual Basic 2008, le proprietà predefinite non sono supportate a meno che non assumano argomenti.". Volevo mantenere la mia risposta concentrata sul 'Set' per VB classic. –

Problemi correlati