Bị mắc kẹt.Tại sao mã C# này không biên dịch khi sử dụng các tham số được đặt tên?
class Test
{
void Main()
{
F(() => ""); // ok
F(named:() => ""); // 'T' cannot be inferred from the usage!
F<string>(() => ""); // ok
F<string>(named:() => ""); // ok
}
void F<T>(Func<T> named) { }
}
Ai đó có thể cho tôi biết tại sao cuộc gọi thứ hai đến F không biên dịch được?
(Lưu ý rằng đây là một ví dụ bị loại bỏ đáng kể, đó là lý do tại sao nó có vẻ là tổng hợp. Trong trường hợp thực tế tôi thấy, có một số tham số mặc định trước khi 'đặt tên' và tham số được đặt tên là bắt buộc. rõ ràng là đặc điểm kỹ thuật rõ ràng của 'T' của người gọi.)
có vẻ như không đủ trong suy luận kiểu đại biểu của trình biên dịch. – Jeff
Có khả năng là âm thanh. Và nếu bạn đưa ra nhận xét đó thành một câu trả lời, tôi sẽ chấp nhận nó. – scobi