2012-02-22 32 views
6

Có sự khác biệt chức năng nào giữa các chức năng này với các cuộc gọi chức năng hay không.Đóng cửa và công việc

Method1:

public static void PrintMe(object obj) 
{ 
    Task task = new Task(() => 
    { 
     Console.WriteLine(obj.ToString()); 
    }); 
    task.Start(); 
} 

Method2:

public static void PrintMe(object obj) 
{ 
    Task task = new Task((object arg) => 
    { 
     Console.WriteLine(arg.ToString()); 
    }, obj); 
    task.Start(); 
} 

Trả lời

9

Người đầu tiên vượt qua biến obj với nhiệm vụ. Giá trị thứ hai vượt qua giá trị của obj.

Để xem sự khác biệt, hãy gán thứ gì đó khác cho obj sau khi tạo tác vụ.

public static void PrintMe(object obj) 
{ 
    Task task = new Task(() => 
    { 
     Console.WriteLine(obj.ToString()); 
    }); 
    obj = "Surprise";   
    task.Start(); 
}