c # .net dlaczego Task.Run wydaje się obsługiwać Func <T> inaczej niż inny kod?

Nowa metoda statyczna Task.Run, która jest częścią platformy .NET 4.5, wydaje się nie zachowywać tak, jak można by oczekiwać.

Na przykład:

Task<Int32> t = Task.Run(()=>5);     

kompiluje się dobrze, ale

Task<Int32> t = Task.Run(MyIntReturningMethod);
...
public Int32 MyIntReturningMethod() {
  return (5);
  }

skarży się, że MyIntReturningMethod zwraca niewłaściwy typ.

Być może nie rozumiem, które przeciążenie Task.Run jest wywoływane. Ale moim zdaniem powyższy kod lambda wygląda bardzo podobnie doFunc<Int32>, a MyIntReturningMethod jest zdecydowanie kompatybilny zFunc<Int32>

Jakieś pomysły na to, co się dzieje? Michael

questionAnswers(6)

yourAnswerToTheQuestion