Bây giờ chúng ta có lambdas và suy luận kiểu và một số nội dung khác, có một thành ngữ phổ biến ở các ngôn ngữ khác hiện có ý nghĩa rất nhiều trong C#. Ví dụ của bạn là về việc mở một tập tin, làm một cái gì đó với nó, và sau đó đóng nó lại. Vâng, bây giờ, bạn có thể tạo một phương thức trợ giúp mở tệp và cũng đảm bảo đóng/xóa/dọn sạch, nhưng gọi ra lambda mà bạn cung cấp cho phần "làm công cụ". Điều này sẽ giúp bạn có được thử/catch/cuối cùng phức tạp xử lý/dọn dẹp công cụ ngay tại một nơi, và sau đó sử dụng nó hơn và hơn.
Dưới đây là một ví dụ:
public static void ProcessFile(string filePath, Action<File> fileProcessor)
{
File openFile = null;
try
{
openFile = File.Open(filePath); // I'm making this up ... point is you are acquiring a resource that needs to be cleaned up after.
fileProcessor(openFile);
}
finally
{
openFile.Close(); // Or dispose, or whatever.
}
}
Bây giờ, những người gọi của phương pháp này không cần phải lo lắng về việc làm thế nào để mở file hoặc đóng/vứt bỏ nó. Họ có thể làm điều gì đó như thế này:
Helpers.ProcessFile("C://somefile.txt", f =>
{
while(var text = f.ReadLine())
{
Console.WriteLine(text);
}
});
Nguồn
2009-03-20 03:08:40
Mẫu mã sẽ giúp minh họa câu hỏi của bạn. – Alan
bất kỳ mẫu nào (mã thực tế hơn) cho câu hỏi minh họa? – Kiquenet