Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
新元组语法在C#version 7中不起作用_C#_Visual Studio_C# 7.0 - Fatal编程技术网

新元组语法在C#version 7中不起作用

新元组语法在C#version 7中不起作用,c#,visual-studio,c#-7.0,C#,Visual Studio,C# 7.0,我已经开始在VisualStudioEnterprise15Preview 2中尝试C#7的新功能。我能够运行其他即将出现的特性的代码,如二进制文本、数字分隔符等。但是元组初始化的新语法不起作用 以下是我的代码片段: var latLong = new (double lat, double lng) { lat = 0, lng = 0 }; var result = (5, 20); var result = (count: 5, sum: 20); 我遵循了博客中提到的所有步骤。如果其他

我已经开始在VisualStudioEnterprise15Preview 2中尝试C#7的新功能。我能够运行其他即将出现的特性的代码,如二进制文本、数字分隔符等。但是元组初始化的新语法不起作用

以下是我的代码片段:

var latLong = new (double lat, double lng) { lat = 0, lng = 0 };
var result = (5, 20);
var result = (count: 5, sum: 20);
我遵循了博客中提到的所有步骤。如果其他人也遇到过这个问题,就发布这个问题。上述代码导致编译失败,如下所示:

1>Program.cs(18,26,18,27):错误CS1031:应为类型
1> Program.cs(18,27,18,33):错误CS1525:无效的表达式项“double”
1> cs(18,34,18,37):错误CS1003:语法错误,,,应为
1> Program.cs(18,39,18,45):错误CS1525:无效的表达式项“double”
1> cs(18,46,18,49):错误CS1003:语法错误,,,应为

我从另一个链接中找到了答案。如果你仔细阅读评论部分,很明显,并不是所有即将推出的新功能都能在最新发布的VS15版本中发布。Tuple(具有新声明语法的值类型)就是这样一个特性


在所有功能真正开始工作之前,我们可能必须等待RTM构建,或者另一种方法是从其gitHub存储库获取roslyn的最新源代码,在您自己的机器上克隆,编译并使您的Visual Studio 15 Preview 2安装使用它。您获取的最新提交越多,您可以使用的功能就越多。

您可以通过以下方式对其进行初始化:

void Main()
{
    var latLong = (lat:0, lng:0);
    var result1 = (5, 20);
    var result2 = (count: 5, sum: 20);
}
要尝试它,您可以使用fiddle(此答案底部的链接),也可以脱机使用,两者都已经支持C#7了。 要查看结果,请添加

latLong.Dump(); result1.Dump(); result2.Dump();
请参见上面的示例。所有3个声明都创建为
ValueTuple
。要创建其他数据类型,需要将其指定为显式类型转换,例如

var latLong = (lat:(double)0.5, lng:(double)0);
将创建一个
ValueTuple
。要分解元组,请使用

var (lat, lng) = latLong;
这将创建并分配两个变量
lat
lng
。要了解更多C#7功能,请查看