创建现代元组时 new 运算符的含义是什么?还是雏形?

问题描述 投票:0回答:1

假设

new
运算符留给现代
tuple
作为基础。也就是说,它可以被忽略。
我可以在从方法或属性返回值时编写它。但是声明变量的时候就写不出来

internal class Program
{
    private static (int, int) getVal1 => (1, 2);
    private static (int, int) getVal2 => new(3, 4);

    private static (int, int) getVal3() { var v = new(5, 6); return v; }
    // Error CS8754 There is no target type ...   ^^^^^^^^^

    static void Main(string[] args)
    {
        Console.WriteLine(getVal1);
        Console.WriteLine(getVal2);
        Console.WriteLine(getVal3());
    }
}

这是为什么?

c# tuples new-operator
1个回答
0
投票

因为在

getVal2
方法中,可以推断出类型的类型:

private static (int, int) getVal2 => new(3, 4);
               ^^^^^^^^^^ type

而对于语句

var x = new(5,6)
,编译器无法推断类型。
x
可以是元组或任何其他具有接受 2 个参数的参数的类型(例如“范围”或“间隔”类型)

© www.soinside.com 2019 - 2024. All rights reserved.