Một tính năng thú vị của Cửa sổ ngay lập tức trong Visual Studio là khả năng đánh giá giá trị trả về của một phương thức, đặc biệt nếu nó được gọi bằng mã khách hàng của bạn nhưng nó không phải là một phần của phép gán biến. Trong chế độ Gỡ lỗi, như đã đề cập, bạn có thể tương tác với các biến và thực thi các biểu thức trong bộ nhớ, điều này đóng một vai trò quan trọng để có thể thực hiện điều này.
Ví dụ: nếu bạn có một phương thức tĩnh trả về tổng của hai số như:
private static int GetSum(int a, int b)
{
return a + b;
}
Sau đó, trong Cửa sổ ngay lập tức, bạn có thể nhập như sau:
? GetSum(2, 4)
6
Như bạn có thể thấy, điều này thực sự hiệu quả đối với các phương thức tĩnh. Tuy nhiên, nếu phương thức không phải là static thì bạn cần phải tương tác với một tham chiếu đến đối tượng mà phương thức đó thuộc về.
Ví dụ: giả sử đây là lớp của bạn trông như thế nào:
private class Foo
{
public string GetMessage()
{
return "hello";
}
}
Nếu đối tượng đã tồn tại trong bộ nhớ và nó nằm trong phạm vi, thì bạn có thể gọi nó trong Cửa sổ ngay lập tức miễn là nó đã được khởi tạo trước điểm ngắt hiện tại của bạn (hoặc, ít nhất, trước khi mã bị tạm dừng trong chế độ gỡ lỗi):
? foo.GetMessage(); // object ‘foo’ already exists
"hello"
Ngoài ra, nếu bạn muốn tương tác và kiểm tra phương pháp trực tiếp mà không cần dựa vào phiên bản hiện có trong bộ nhớ, thì bạn có thể khởi tạo phiên bản của riêng mình trong Cửa sổ ngay lập tức:
? Foo foo = new Foo(); // new instance of ‘Foo’
{temp.Program.Foo}
? foo.GetMessage()
"hello"
Bạn có thể thực hiện thêm một bước và tạm thời gán kết quả của phương pháp cho các biến nếu bạn muốn thực hiện thêm các đánh giá, tính toán, v.v.:
? string msg = foo.GetMessage();
"hello"
? msg + " there!"
"hello there!"
Hơn nữa, nếu bạn thậm chí không muốn khai báo tên biến cho một đối tượng mới và chỉ muốn chạy một trong các phương thức / hàm của nó thì hãy làm như sau:
? new Foo().GetMessage()
"hello"
Một cách rất phổ biến để xem giá trị của một phương thức là chọn tên phương thức của một lớp và thực hiện 'Thêm theo dõi' để bạn có thể thấy giá trị hiện tại của nó trong cửa sổ Xem. Tuy nhiên, một lần nữa, đối tượng cần được khởi tạo và nằm trong phạm vi để một giá trị hợp lệ được hiển thị. Điều này ít mạnh hơn và hạn chế hơn nhiều so với việc sử dụng Cửa sổ ngay lập tức.
Cùng với các phương pháp kiểm tra, bạn có thể làm các phương trình toán học đơn giản:
? 5 * 6
30
hoặc so sánh các giá trị:
? 5==6
false
? 6==6
true
Dấu chấm hỏi ('?') Là không cần thiết nếu bạn đang ở trực tiếp trong Cửa sổ ngay lập tức nhưng nó được đưa vào đây để rõ ràng (để phân biệt giữa biểu thức được nhập vào so với kết quả.) Tuy nhiên, nếu bạn đang ở trong Cửa sổ lệnh và cần để thực hiện một số công việc nhanh chóng trong Cửa sổ ngay lập tức, sau đó đặt trước câu lệnh của bạn bằng '?' và bạn đi.
Intellisense hoạt động trong Cửa sổ ngay lập tức , nhưng đôi khi nó có thể hơi mâu thuẫn. Theo kinh nghiệm của tôi, nó dường như chỉ khả dụng ở chế độ Gỡ lỗi, nhưng không có trong thiết kế, chế độ không gỡ lỗi.
Thật không may, một nhược điểm khác của Cửa sổ ngay lập tức là nó không hỗ trợ các vòng lặp.