2012-05-09 41 views
7

Tôi đã stumbled khi mã này:String.Contains không yêu cầu tham số trong C#?

var knownSeparators = new[] { "\\", "/", "|", "." }; 
return knownSeparators.FirstOrDefault(path.Contains); 

nơi đường dẫn là một chuỗi và giá trị trả về phải là một chuỗi là tốt.

Tất cả các đường dẫn Mặc dù 'intellisense gợi ý tham số, nó hoạt động tốt mà không có.

Cách thức hoạt động chính xác? Có cách nào để sao chép hành vi này trong vb.net không?

Trả lời

7

FirstOrDefault lấy đại biểu (a Func<T, bool>) và cuộc gọi này đang tạo đại biểu từ nhóm phương pháp . Nó tương đương với:

Func<string, bool> predicate = path.Contains; 
return knownSeparators.FirstOrDefault(predicate); 

tôi nghi ngờ trong VB.NET bạn có thể làm:

Return knownSeparators.FirstOrDefault(AddressOf path.Contains) 

... nhưng tôi không thể nói chắc chắn mà không cố gắng nó.

+0

Đáng buồn thay, nó vẫn cho cùng một lỗi nói rằng nó yêu cầu tham số (sau khi thêm địa chỉOf) – Terry

+0

@djerry: Tôi đã chỉnh sửa để xóa các dấu ngoặc - xem có giúp được không. –

+0

thực sự, đã thoát khỏi nó, là giáo dục, cảm ơn. – Terry

Các vấn đề liên quan