Я играл с async / await
, когда натолкнулся на следующее:
class C
{
private static string str;
private static async Task<int> FooAsync()
{
str += "2";
await Task.Delay(100);
str += "4";
return 5;
}
private static void Main(string[] args)
{
str = "1";
var t = FooAsync();
str += "3";
str += t.Result; // Line X
Console.WriteLine(str);
}
}
Я ожидал, что результатом будет "12345", но это было "1235". Как-то "4" было съедено.
Если я разделил строку X на:
int i = t.Result;
str += i;
Затем ожидаемые результаты "12345".
Почему так? (Использование VS2012)