Nó mô tả hàm lambda (ẩn danh). Trong trường hợp này, nó là một hàm nhận một đối số, o và sau đó thực hiện MyFunction (mặc dù trong trường hợp này về cơ bản nó ném giá trị của o away). Nó tương đương với:
void Foo(object o) //We know that Foo takes an object and returns void because QueueUserWorkItem expects an instance of type WaitCallback which is a delegate that takes and object and returns void
{
MyFunction();
}
ThreadPool.QueueUserWorkItem(Foo) // or ThreadPool.QueueUserWorkItem(new WaitCallback(Foo));
Loại o được suy ra dựa trên bất cứ điều gì QueueUserWorkItem hy vọng. QueueUserWorkItem mong đợi kiểu WaitCallback vì vậy trong trường hợp này o nên có kiểu đối tượng vì WaitCallback là đại biểu cho các phương thức với một tham số của kiểu đối tượng trả về void.
Đối với có nghĩa là của đoạn mã cụ thể này; về cơ bản bạn đang thêm một hàm (mục công việc) vào một hàng đợi sẽ được thực thi bởi một trong các luồng trong nhóm (khi nó trở nên có sẵn). Đoạn mã đặc biệt đó chỉ mô tả một cách tốt đẹp, ngắn gọn đi qua trong hàm mà không phải trải qua các rắc rối của việc định nghĩa đầy đủ một phương thức lớp.
Ngẫu nhiên, tôi và những người khác, có xu hướng đọc => là 'như vậy'. Một số người đọc nó là 'đi tới'.
Nguồn
2010-06-28 04:59:11
Tôi nghĩ bạn có nghĩa là '() => MyFunction()', đây là một lambda mà không có một tham số –
@Mystere Man QueueUserWorkItem hy vọng một thể hiện của WaitCallback mà là một đại biểu cho phương pháp mà mất và đối tượng và trả về void . Vì vậy, trong khi lạ, chữ ký là chính xác. –