将新元组转换为旧元组会产生编译错误

Casting new tuple to old one gives compilation error

使用下面的代码,

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

    }

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

我遇到以下编译时错误。

Error CS0029 Cannot implicitly convert type '(int, int)' to 'System.Tuple < int, int >'

这是否意味着新版本的元组不兼容旧版本?还是我做错了什么?

是的,你应该使用扩展方法 ToTuple。所以在你的例子中......

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

    }

    static (int, int) TupleTest()
    {
        return (1, 2);
    }
  • 改用ValueTuple

ValueTuple 测试 = TupleTest();

  • 使用ToTuple扩展方法(ToValueTuple也可以):

元组测试 = TupleTest().ToTuple();