有了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'
c# - .NET Core中的C#7元组和名称-LMLPHP
Find this type on nuget.org菜单是一个类似的resharper特性

关于c# - .NET Core中的C#7元组和名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43842664/

10-12 07:36
查看更多