2010-03-07 9 views
14

Questo potrebbe salvarmi così tanto tempo. A volte mi ritrovo a scrivere cose del genere nel mezzo della notte o nella finestra immediata:Perché non posso dichiarare nuove variabili nella finestra immediata?

MyObject.Function1.Fuction2.Fuction3.Fuction2 

Invece ho potuto solo dichiarare diverse nuove variabili e fare questo in modo più strutturato.

Tuttavia, ciò non è consentito.

C'è un modo che posso fare questo? Ci sarà supporto per ciò che voglio in qualsiasi versione futura?

+0

Quale lingua? –

risposta

17

Non utilizzare Dim

jack = 12 
? jack 
12 {Integer} 
+0

Trovo un po 'fastidioso il fatto che ti sia consentito effettuare incarichi impliciti come quello ... ma una risposta corretta è una risposta giusta, +1 – Aaronaught

+1

La questione è una domanda sbagliata. – AMissico

2

@AMissico ha indicato il mio errore precedente - apparentemente è possibile farlo in VB.NET con un incarico implicito.

Lo considererei ancora una stampella, e se mai mi trovassi a doverlo fare, inizierei a chiedere perché il programma è strutturato in modo tale da renderlo necessario.

Se è necessario questo livello di informazioni di debug, è preferibile inserirlo nella logica del programma, in questo modo, quando i programmatori di manutenzione futuri devono eseguire il debug dello stesso percorso di codice, avranno tutti gli stessi informazioni dettagliate senza dover "interrogare" i grafici degli oggetti profondamente annidati. Invece di scrivere MyObject.Function1().Function2().Function3(), scrivere:

var first = MyObject.Function1(); 
var second = first.Function2(); 
var third = second.Function3(); 

Quindi è possibile scorrere la logica del programma vero e proprio in un debugger invece di scrivere un intero script di test nella finestra immediata.

Si potrebbe anche considerare di scrivere il proprio Debugger Visualizer se è necessario ottenere una rappresentazione dettagliata di un oggetto o una gerarchia complessi.

+0

Non capisci, sto eseguendo il debug delle gerarchie. Ecco come sono progettati. Devo dichiarare alcune vars per poterle fare il debug in modo efficiente. – Tomasi

+0

@diamandiev: Quindi dichiara le variabili ** nel codice **, non nel debugger. O creare un visualizzatore, che non richiede affatto la modifica di alcun codice. C'è qualcosa che ti impedisce di farlo? – Aaronaught

+0

@diamandiev: crea variabili nel codice, quindi puoi usarle in Windows immediato. Inserisci le variabili in un modulo con ambito pubblico. Inoltre, dal momento che si sta eseguendo il debug, è possibile creare procedure di test nel modulo, in modo da poterle chiamare da Windows immediato e impostare i punti di interruzione nelle procedure di test. – AMissico

1

Questa potrebbe essere un'alternativa: è possibile utilizzare l'Object Test Bench per creare un'istanza di MyObject e richiamare un metodo dell'istanza con qualsiasi argomento necessario (o semplicemente richiamare il metodo senza creare un'istanza, se è un metodo statico).

+0

Non funziona per VB, a meno che tu non conosca il modo. – AMissico

+0

Lo sto usando sempre (in VB). Può essere utilizzato solo sul progetto attivo nella soluzione. È possibile creare un'istanza (o richiamare un metodo statico) utilizzando la finestra Visualizzazione classi e manipolare i metodi di istanza utilizzando la finestra Banco prova oggetto stesso. –

+0

Oh, giusto! Solo il progetto attivo. Lo dimentico sempre. Proprio come ho dimenticato, posso cambiare il progetto attivo per arrivare all'oggetto in questione. – AMissico

0

In aggiunta a ciò che dice Aaronaught, tali costrutti come descrivi violano lo Law of Demeter. Potresti considerare di ristrutturare il tuo programma in modo tale che tali costrutti non siano necessari. In realtà, anche la soluzione offerta mantiene la violazione della corretta separazione delle preoccupazioni.

Se un metodo fa riferimento a non più di un livello di riferimento indiretto, il comportamento del debugger sarà più appropriato per l'applicazione.

3

Con C# è possibile dichiarare variabili nella finestra immediata durante il debug (sinceramente non so se si tratta solo di una funzionalità VS2008, ma l'ho appena verificata in VS2008 team edition).

Non è possibile dichiarare la variabile nella finestra di controllo (infatti il ​​messaggio di errore indica "Le dichiarazioni di dichiarazione sono consentite solo nella finestra immediata") ma è possibile visualizzare qualsiasi variabile creata nella finestra immediata.

Inoltre, non è possibile utilizzare var quando si dichiarano le variabili nella finestra immediata, ma a parte ciò si può fare ciò che si sta chiedendo.

+1

non uso C# troppo male. perché C# ottiene sempre tutte le cose interessanti? – Tomasi

+0

Al momento del voto si prega di lasciare un commento. –

+0

Ho votato -1 perché è possibile. Non posso usare 'Dim' o' As ... '. – AMissico

12

Proprio rispondendo alla domanda del titolo:

In VS2015 è possibile dichiarare le variabili nella finestra immediata. Ma si deve finire il vostro comando con un virgola:

var abc = "abcdef"; 
Expression has been evaluated and has no value 

o

var n = 7; 
Expression has been evaluated and has no value 

o

int o = 8; 
Expression has been evaluated and has no value 

Per mostrare il risultato, basta digitare il nome della variabile:

abc 
"abcdef" 

o

?abc 
"abcdef" 

o

?abc; 
"abcdef" 

o

abc; 
"abcdef" 
Problemi correlati