tôi đã rối tung xung quanh với C# dự án của tôi một chút và tôi đã ngạc nhiên khi thấy mã này biên dịch:Tại sao mã sau đây biên dịch mà không có lỗi?
var a = new Action<string>(ref b => b = "hello");
Flipping nó theo cách khác xung quanh, như Action<string> a = ref b => b = "hello";
sẽ đưa ra một lỗi cú pháp tại 'ref'.
đủ chắc, sao chép-dán đoạn mã vào http://dotnetfiddle.net đưa ra một lỗi biên dịch:
A ref or out argument must be an assignable variable
Có tôi gặp phải một lỗi trong trình biên dịch? (Tôi đang sử dụng VS 2015 và C# 6.)
EDIT: Chỉ cần chuyển sang trình biên dịch Roslyn trên NET Fiddle, nó vẫn phát ra những lỗi tương tự.
Tôi đã thử nó tại [tryroslyn] (http://goo.gl/00ZyS0) và có: nó biên dịch - hành vi cũng giống như nếu 'ref' không có ở đó. Trông giống như một lỗi (có thể được báo cáo nếu chưa được thực hiện). –
@LucasTrzesniewski Thật vậy. Tôi đã gửi một vấn đề cho [Roslyn GitHub repo] (https://github.com/dotnet/roslyn/issues/6646) về việc này. –
Lạ. Còn về lambda cú pháp chính xác (ref string b) => b = "hello" '(lưu ý dấu ngoặc đơn và kiểu' string'), nó có thể được chuyển thành 'Action' với trình biên dịch đó không? Tôi không có quyền truy cập vào trình biên dịch Visual C# 6 ngay bây giờ. –