有了C 7新的元组特性,我们应该能够通过从类型派生的名称来访问字段。
public (double lat, double lng) GetLatLng(string address) { ... }
var ll = GetLatLng("some address");
Console.WriteLine($"Lat: {ll.lat}, Long: {ll.lng}");
这在.NET Core中是不可能的。为什么?->只适用于项1;项2。不是用液化天然气。
谢谢
最佳答案
更新
visual studio 2017 intellisense在添加System.ValueTuple
包后可能会很慢地更新自身,并且即使没有编译错误,也会继续显示错误波形。不过,编译项目表明命名元组正在工作。快速修复方法是重新打开源文件或解决方案。
原始
错误消息解释了“预定义类型System.ValueTuple'2 is not defined or imported
”。您需要添加nuget中的System.ValueTuple包才能使用命名元组。
添加包后,代码将编译:
class Program
{
static (double lat, double lng) GetLatLng(string address)
{
return (1, 1);
}
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
var ll = GetLatLng("some address");
Console.WriteLine($"Lat: {ll.lat}, Long: {ll.lng}");
}
}
Scott Hanselman shows如何通过启用
Options > Text Editor > C# > Advanced > Using Directives
中的设置,配置Visual Studio 2017以自动为缺少的类型建议NuGet包。启用
Suggest usings for types in NuGet packages
设置后,缺少元组的快速修复菜单将显示Install package 'System.ValueTuple'
:Find this type on nuget.org
菜单是一个类似的resharper特性关于c# - .NET Core中的C#7元组和名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43842664/