2013-08-14 42 views
9

Giả sử tôi muốn sử dụng cụm từ thông dụng để thêm "kiểm tra" trước mỗi từ trong một chuỗi.

string MyText="hello world" 
string Pattern = "\w+"; 

tôi có thể làm điều này:

Regex.Replace(MyText, Pattern, "test$&") 

hay này:

Regex.Replace(MyText, Pattern, m=>"test"+m.Value) 

tôi sẽ nhận được kết quả tương tự như vậy sự khác biệt giữa $ & và giá trị trong biểu thức lambda là gì? Nếu không có sự khác biệt về kết quả, có vấn đề về hiệu suất không?

+4

+1; Tôi không biết bạn có thể sử dụng một lambda ở đây. – Nolonar

Trả lời

1

Lambdas là các phương thức ẩn danh hoạt động giống như các phương thức thông thường. Phần được khai báo trong ví dụ của bạn tương đương với: string Convert(RegexMatch match) { return "test" + match.Value; }. Sử dụng cú pháp này có thể cung cấp cho bạn quyền truy cập vào nhiều khả năng phong phú hơn sau đó sử dụng biểu thức Regex được sử dụng trong ví dụ đầu tiên của bạn.

+1

Câu hỏi không phải là "biểu thức lambda" là gì ... ... Điều tôi muốn biết là nếu có bất kỳ khác biệt nào giữa việc sử dụng "test $ &" và m => "test" + m.Value tôi không nghĩ có sự khác biệt về chức năng giữa 2 nhưng tôi không chắc chắn ở mức 100%. Tôi cũng muốn biết vấn đề hiệu suất của việc sử dụng 1 giải pháp so với một giải pháp khác. – Anthony

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