Приведение нового кортежа к старому дает ошибку компиляции

С кодом ниже,

class Program
{
    static void Main(string[] args)
    {
        Tuple<int, int> test = TupleTest();

    }

    static (int, int) TupleTest()
    {
        return (1, 2);
    }

Я получаю следующую ошибку времени компиляции.

Ошибка CS0029 Невозможно неявно преобразовать тип '(int, int)' в 'System.Tuple '

Означает ли это, что новая версия Tuple неявно не совместима со старой версией? Или я что-то здесь не так делаю?

2 ответа

Решение

Да, вы должны использовать метод расширения ToTuple. Итак, в вашем примере...

class Program
{
    static void Main(string[] args)
    {
        Tuple<int, int> test = TupleTest().ToTuple();

    }

    static (int, int) TupleTest()
    {
        return (1, 2);
    }
  • использование ValueTuple вместо:

ValueTuple test = TupleTest ();

  • Использовать ToTuple метод расширения (ToValueTuple также доступно):

Tuple test = TupleTest (). ToTuple ();

Другие вопросы по тегам