将新元组转换为旧元组会产生编译错误
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();
使用下面的代码,
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();