Почему здесь результат 50, а не 2?
int n = 2; n = n.ToString().Aggregate(1, (a, b) => a * b)
А вот 2?
int n = 2; n = n.ToString().Aggregate(1, (a, b) => a * (b -'0'))
Как это работает?
В обоих примерах a - это int, а b - это char.
a
int
b
char
a - это ваше семя, = 1, а b - это значение Unicode: ' 2 ', = 50. Следовательно, результат в первом случае равен 50.
Значение Юникода' 0 'равно 48, поэтому результат равен 2.