Почему у Decimal.TryParse сигнатура string * byref<decimal> -> bool (то есть функция, принимающая кортеж и возвращающая true/false), но при этом её можно вызывать с аргументом-строкой как Decimal.TryParse "0,05", при этом она вернёт (bool * decimal)? Это особенный случай, или это фича языка, которую можно использовать и в своих функциях?