Se voglio restringere la portata di una variabile in C#, posso introdurre sostegni supplementari - vale a dire:Campo di applicazione e come restringere usando VB.Net
class Program
{
static void Main(string[] args)
{
myClass x = new myClass();
x.MyProperty = 1000;
Console.WriteLine("x = " + x.MyProperty);
{
myClass y = new myClass();
y.MyProperty = 2000;
Console.WriteLine("y = " + y.MyProperty);
}
myClass y2 = new myClass();
y2.MyProperty = 3000;
Console.WriteLine("y2 = " + y2.MyProperty);
}
class myClass
{
public int MyProperty { get; set; }
}
}
nell'IDE, non posso più fare riferimento y al di fuori dello scopo introdotto dalle nuove parentesi graffe. Avrei pensato che ciò significherebbe che la variabile y sarebbe disponibile per la garbage collection.
(è interessante notare che quando la visualizzazione del codice compilato usando riflettore sembra che non v'è alcuna differenza con o senza i tiranti supplementari)
Esiste un modo simile a questo per restringere portata utilizzando VB. netto? Questo ha un impatto su quando le variabili definite nello scope interno possono essere spazzate via?
per quanto riguarda l'ambito. L'aiuto .Net cita il blocco Con come definizione di un livello di blocco di ambito e si applica a qualsiasi cosa definita all'interno del blocco, ma non al soggetto del blocco. portata restringimento potrebbe essere ottenuto utilizzando Con 1 end con o Con Vero End With ma si sente ancora hacky ... – hitch
Il comportamento GC è la stessa in VB.NET. VB.NET non ha alcun equivalente di un blocco di istruzioni solo per la portata - si veda la voce MSDN (dalla risposta di paintballbob) http://msdn.microsoft.com/en-us/library/1t0wsc67.aspx – MarkJ