Trong Roslyn Pattern Matching spec nó nói rằng:Pattern trận phạm vi biến
Phạm vi của một biến mô hình như sau:
Nếu mẫu xuất hiện trong điều kiện của một câu lệnh if, phạm vi của nó là điều kiện và tuyên bố được kiểm soát của câu lệnh if, nhưng không phải là mệnh đề khác của mệnh đề.
Tuy nhiên, mới nhất của Microsoft "Có gì mới" posts và presentations đang hiển thị ví dụ này:
public void PrintStars(object o)
{
if (o is null) return; // constant pattern "null"
if (!(o is int i)) return; // type pattern "int i"
WriteLine(new string('*', i));
}
nào cho thấy các mô hình phù hợp i
biến được sử dụng bên ngoài nếu phạm vi cấp độ của các mô hình phù hợp.
Đây có phải là sự giám sát hoặc có phạm vi được thay đổi từ thông số kỹ thuật không?
Đó sẽ là tuyên bố _controlled của if statement_ – juharr
@juharr, câu lệnh kiểm soát sẽ không được trả về? –
Vâng, tôi đã bỏ lỡ điều đó. Tôi thực sự nghĩ rằng điều này có thể đề cập đến một 'i' ở một phạm vi cao hơn, nhưng thật khó để nói vì nó là một đoạn mã cho chức năng beta. Tôi đoán bạn có thể xem trước và thử nghiệm nó. – juharr