There are many languages ββwhere it is legal to return multiple values ββ(for example, return (a, b) instead of using ref or out (they are considered another root of all evils).) Tuple solves this problem.
Let's look at int Math.DivRem(int, int, out int) . It can be reorganized into Tuple<int, int> Math.DivRem(int, int) . If you think that in this case you should use special classes instead of Tuple, then the direction is different for delegates: after creating hundreds (tens of actually) specialized delegates, MS created common Action and Func and has started using them.
(We will ignore that Tuple is a family of classes, so their use is βslow.β Premature optimization and all these nice things :-))
I will add that Tuple solves the problem of writing short code blocks here on SO :-)
source share