Espressioni in linguaggio Visual Basic
Le informazioni contenute in questo argomento sono valide per:
Edizione |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium e Ultimate |
L'analizzatore di espressioni gestite accetta la maggior parte delle espressioni scritte in Visual Basic. Nella finestra di controllo immediato l'analizzatore di espressioni supporta esclusivamente istruzioni a riga singola.
Nelle sezioni riportate di seguito vengono fornite informazioni specifiche e vengono illustrati alcuni tipi di espressioni non supportati o parzialmente supportati:
Cast
Oggetti dinamici
Valutazione delle funzioni
Identificatori e tipi
Alias di importazione
Variabili oggetto contenenti tipi intrinseci
Operatori
Valutazione delle proprietà
Stringhe
Operatore TypeOf
Parole chiave non supportate
Dichiarazione di variabili
WebMethod
In Visual Basic non sono supportate le regole di espansione automatica per la visualizzazione del contenuto di un tipo di dati in formato significativo. Per ulteriori informazioni, vedere Visualizzazione degli elementi di un tipo di dati personalizzato.
Cast
Nel debugger possono essere utilizzati cast semplici:
A = CStr(B)
Oggetti dinamici
L'analizzatore di espressioni può valutare variabili che sono digitate staticamente come dinamiche. Può valutare anche oggetti che implementano l'interfaccia IDynamicObject. Quando gli oggetti che implementano l'interfaccia IDynamicObject vengono valutati nella finestra Espressioni di controllo, viene aggiunto un nodo Visualizzazione dinamica. Il nodo di visualizzazione dinamica mostra i membri dell'oggetto ma non consente la modifica dei valori dei membri.
Le seguenti funzionalità di oggetti dinamici non sono supportate:
Gli operatori composti +=, -=, %=, /= e *=
Molti cast, inclusi cast numerici e cast dell'argomento di tipo
Chiamate al metodo con più di due argomenti
I metodi per il richiamo delle proprietà con più di due argomenti
I metodi per il richiamo delle proprietà con gli argomenti
Assegnazione a un indicizzatore
Gli operatori booleani && e ||
Valutazione delle funzioni
Il debugger supporta la valutazione delle funzioni, tra cui quelle in overload. Di conseguenza, quando si immette una delle espressioni seguenti, il debugger chiama la versione corretta della funzione in overload:
myFunction (param1)
myFunction (param1, param2)
La valutazione di una funzione nel debugger comporta la chiamata e l'esecuzione del codice relativo a tale funzione. Se la funzione genera effetti collaterali, quali l'allocazione di memoria o la modifica del valore di una variabile globale, la valutazione della funzione in una finestra del debugger comporterà la modifica dello stato del programma e questa operazione può produrre risultati imprevisti.
Quando si imposta un punto di interruzione su una funzione in overload, la posizione del punto di interruzione dipende dal modo in cui si specifica la funzione. Se si specifica solo il nome della funzione, verrà impostato un punto di interruzione su ogni overload del nome della funzione. Se si specifica la firma completa, ossia il nome della funzione e l'elenco completo degli argomenti, verrà impostato un punto di interruzione sull'overload specificato.
Identificatori e tipi
Nelle espressioni del debugger è possibile utilizzare qualsiasi identificatore visibile nell'ambito corrente. Se, ad esempio, il debugger viene interrotto nella funzione Magh, è possibile utilizzare la maggior parte degli identificatori visibili all'interno di Magh, tra cui nomi di variabili e nomi di funzioni. Le costanti locali non sono supportate. È possibile impostare il valore di qualsiasi variabile visibile nell'ambito corrente.
Nel debugger è possibile visualizzare correttamente qualsiasi variabile di tipo primitivo o intrinseco. Nel caso di variabili di tipo classe, il valore viene visualizzato correttamente in base al tipo derivato di livello più basso. Se si dispone di un oggetto leo di tipo Lion derivato dal tipo Cat, è possibile valutare leo.Clawlength e ottenere il valore corretto per un oggetto di tipo Lion.
Alias di importazione
Nelle finestre del debugger non è possibile utilizzare gli alias di importazione.
Variabili oggetto contenenti tipi intrinseci
Le variabili oggetto che contengono tipi intrinseci di variabili, ad esempio integer, vengono visualizzate e modificate in un modo che potrebbe sembrare poco intuitivo. Si supponga, ad esempio, che il codice sorgente contenga una variabile oggetto simile a quella riportata di seguito:
Dim obj As Object = 5
Nella finestra Espressioni di controllo il valore della variabile obj verrà visualizzato come segue:
5 {Integer}
Per modificare il valore della variabile a 6, è necessario immettere:
6
Non è invece corretto immettere:
6 {Integer}
Dopo la modifica del valore, si noterà che nel debugger viene aggiunto automaticamente {Integer}.
Operatori
Nel debugger viene eseguita correttamente la valutazione della maggior parte degli operatori, tra cui:
Operatori aritmetici: ( expr1 + expr2, expr1 - expr2, expr1 * expr2, expr1 / expr2, expr1 \ expr2, expr1 ^ expr2 , expr1 Mod expr2 ).
Operatori si assegnazione: (var1 = expr2, var1 ^= expr2, var1 *= expr2, var1 /= expr2, var1 \= expr2, var1 += expr2, var1 -= expr2, var1 &= expr2).
Operatori di confronto: (expr2 < expr2, expr2 <= expr2, expr1 > expr2, expr1 >= expr2, expr1 = expr2, expr1 <> expr2).
Operatori di concatenazione: (expr1 & expr2, expr1 + expr2).
Operatori logici: (expr1 And expr2, expr1 Or expr2, expr1 XOr expr2, expr1 AndAlso expr2, expr1 OrElse expr2, Not expr1).
Operatori unari: (- expr1, Not expr1, GetType (type)).
Valutazione delle proprietà
Il debugger è in grado di valutare le proprietà in qualsiasi finestra di variabile. La valutazione di una proprietà nel debugger può tuttavia produrre effetti collaterali, ad esempio la modifica di valori di variabili, che influiscono sui risultati del programma. Per evitare gli effetti collaterali causati da una valutazione accidentale, è possibile disattivare la valutazione delle proprietà nella finestra di dialogo Opzioni facendo clic su Debug e quindi su Generale.
Stringhe
In Visual Basic è possibile utilizzare l'operatore Length su una stringa:
mystring.Length
In alternativa
"hello world".Length
Operatore TypeOf
In Visual Basic è possibile utilizzare l'operatore TypeOf nelle finestre del debugger:
TypeOf espressione Is tipo
Ad esempio,
TypeOf Me Is Integer
visualizza il valore false.
Se si specifica l'operatore TypeOf, è necessario includerlo in un'espressione in cui viene utilizzato Is. Se si utilizza TypeOf senza Is, verrà visualizzato il seguente messaggio di errore:
Is required
Parole chiave non supportate
Nelle espressioni specificate nelle finestre del debugger non sono supportate le seguenti parole chiave di Visual Basic:
AddressOf
End
Error
Exit
Goto
On Error
Return
Resume
Select/Case
Stop
SyncLock
Throw
Try/Catch/Finally
With
Non sono inoltre supportate parole chiave a livello di spazio dei nomi o di modulo, ad esempio End Sub o Module.
Dichiarazione di variabili
Non è possibile dichiarare nuove variabili esplicite nelle finestre del debugger.
È tuttavia possibile assegnare un valore a una variabile implicita nella finestra di controllo immediato. Queste variabili implicite hanno un ambito limitato al debugger e non sono accessibili all'esterno del debugger. L'istruzione o = 5, ad esempio, crea in modo implicito una nuova variabile o alla quale assegna il valore 5. Le variabili implicite sono di tipo Object, a meno che il tipo non possa essere dedotto dal debugger.
WebMethod
Non è possibile chiamare WebMethod dalle finestre del debugger.