Condividi tramite


Espressioni in linguaggio Visual Basic

L'analizzatore di espressioni gestite accetta la maggior parte delle espressioni scritte in Visual Basic. Nella finestra Controllo immediato l'analizzatore di espressioni supporta solo istruzioni a riga singola.

Nelle sezioni riportate di seguito vengono fornite informazioni specifiche e vengono illustrati alcuni tipi di espressioni non supportati o supportati parzialmente:

  • 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 di elementi di un tipo di dati personalizzato.

Cast

Nel debugger è possibile utilizzare cast semplici:

A = CStr(B)

Oggetti dinamici

L'analizzatore di espressioni può valutare variabili digitate staticamente come dinamiche. Può inoltre valutare 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 Visualizzazione dinamica mostra i membri dell'oggetto, ma non consente la modifica dei valori dei membri.

Le funzionalità seguenti degli 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

  • Metodi Get di proprietà con più di due argomenti

  • Metodi set di proprietà con argomenti

  • Assegnazione a un indicizzatore

  • Operatori booleani && e ||

Valutazione delle funzioni

Il debugger supporta la valutazione delle funzioni, tra cui quelle in overload. Di conseguenza, è possibile immettere una delle espressioni seguenti e il debugger chiamerà 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, ad esempio 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 con conseguenti 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, il debugger imposterà un punto di interruzione su ogni overload del nome della funzione. Se si specifica la firma completa, il nome della funzione e l'elenco completo degli argomenti, viene 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 dal debugger 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, sono visualizzate e modificate in un modo che può risultare poco intuitivo. Si supponga, ad esempio, che il codice sorgente contenga una variabile oggetto simile alla seguente:

Dim obj As Object = 5

Nella finestra Espressioni di controllo il valore della variabile obj viene visualizzato come segue:

5 {Integer}

Per sostituire il valore della variabile con 6, è necessario immettere:

6

Non 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, expr1Modexpr2).

  • Operatori di 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 (expr1And expr2, expr1Or expr2, expr1XOr expr2, expr1AndAlso expr2, expr1OrElse expr2, Notexpr1).

  • 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 avere effetti collaterali, ad esempio la modifica dei valori delle 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, quindi su Generale.

Stringhe

In Visual Basic è possibile utilizzare l'operatore Length su una stringa:

mystring.Length

-oppure-

"hello world".Length

Operatore TypeOf

In Visual Basic è possibile utilizzare l'operatore TypeOf nelle finestre del debugger:

TypeOf expression Is type

Di seguito è riportato un esempio:

TypeOf Me Is Integer

visualizza il valore false.

Se si utilizza 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 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.

Vedere anche

Altre risorse

Espressioni nel debugger

Riferimenti al linguaggio Visual Basic