Просто быстрый вопрос о перегрузке методов с использованием нового синтаксиса кортежа C # 7.0.
Я создал две перегрузки функций.Упрощенно, они имеют вид:
public Boolean TheFunction( string p_in_value )
{
...
return true;
}
и
public ( Boolean Result, long SomeID ) TheFunction( string p_in_value )
{
...
return ( true, _found_id );
}
Теперь я бы сказал, что, поскольку их соответствующие вызовы будут иметь форму (ы)
_my_bool = TheFunction( "" );
и
( _my_bool, _my_long ) = TheFunction( "" );
, что компилятор должен иметь возможность различать два, тем самым выполняя основное требование, что при создании перегрузок нужно иметь возможность определить, какую версию вы хотитевызов.
Теперь я прочитал в другом вопросе, что еще в C # 3.0 сигнатура метода не включает его тип возвращаемого значения, но, конечно, это больше не должно применяться, поскольку у меня есть функции в других местах, где нет проблем:
public long ReadHive(string p_section, string p_setting, long p_default) {...}
public bool ReadHive(string p_section, string p_setting, bool p_default) {...}
Тем не менее, я получаю синтаксическую ошибку «Программа» уже определяет элемент с именем «TheFunction» с такими же типами параметров ».
Так что, если я не просто смотрю нанеправильно, похоже, что с этим новым синтаксисом возврата кортежа возвращаемые типы не играют никакой роли в различении одной версии от другой, что выглядит довольно недальновидно.
Итак, мой вопрос - ищу ли яне в том направлении, и это должно быть возможно, или мне не повезло, и новый синтаксис в этом отношении просто не подходит?Или я еще более неправ, и мне не хватает какой-то фундаментальной разницы между тем, как обрабатываются мои методы «TheFunction», и тем, как обрабатываются мои методы «ReadHive»?