Nếu tôi muốn thu hẹp phạm vi của một biến trong C#, tôi có thể giới thiệu thêm niềng răng - ví dụ:Phạm vi và làm thế nào để thu hẹp nó sử dụng 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; }
}
}
Trong ide, tôi không còn có thể tham khảo y bên ngoài phạm vi được giới thiệu bởi các niềng răng mới. Tôi đã nghĩ rằng điều này có nghĩa là biến y sẽ có sẵn để thu gom rác thải.
(nó là thú vị để lưu ý rằng khi xem mã biên dịch sử dụng phản xạ dường như không có sự khác biệt có hoặc không có dấu ngoặc bổ sung)
Có cách nào tương tự như sau để thu hẹp phạm vi khi sử dụng VB. mạng lưới? Điều này có ảnh hưởng đến khi các biến được xác định trong phạm vi bên trong có thể được thu gom rác không?
liên quan đến phạm vi trợ giúp .Net đề cập đến khối Với việc xác định mức khối phạm vi và áp dụng cho bất kỳ thứ gì được xác định trong khối, nhưng không áp dụng đối tượng của khối. thu hẹp phạm vi có thể đạt được bằng cách sử dụng Với 1 cuối với hoặc Với True End With nhưng nó vẫn cảm thấy hacky ... – hitch
Các hành vi GC là như nhau trong VB.NET. VB.NET không tương đương với một khối lệnh chỉ cho phạm vi - xem mục MSDN (từ câu trả lời của paintballbob) http://msdn.microsoft.com/en-us/library/1t0wsc67.aspx – MarkJ