Я читал С# 7.0 changelog и столкнулся с примером, который показывает новый синтаксис кортежей.
private static (int Max, int Min) Range(IEnumerable<int> numbers)
{
int min = int.MaxValue;
int max = int.MinValue;
foreach(var n in numbers)
{
min = (n < min) ? n : min;
max = (n > max) ? n : max;
}
return (max, min);
}
И мне стало любопытно, если компилятор оптимизирует строки, такие как min = (n < min)? n: min;
min = (n < min)? n: min;
причина min = min
кажется немного бесполезной. Я скомпилировал код (в режиме выпуска) и открыл его в ILDASM и увидел, что min = min
присваивание все еще существует.
Не сложно ли компилятору пропустить задание? Или, может быть, это связано с проблемой многопоточности?