.NET Core 中的 C# 7 元组和名称
C# 7 Tuples and names in .NET Core
使用 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 中是不可能的。为什么? -> 仅适用于 Item1;项目2。不适用于 .lat .lng.
谢谢
更新
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 如何配置 Visual Studio 2017 以通过启用 Options > Text Editor > C# > Advanced > Using Directives
中的设置自动建议缺失类型的 NuGet 包。
启用 Suggest usings for types in NuGet packages
设置后,丢失元组的快速修复菜单显示 Install package 'System.ValueTuple'
:
Find this type on nuget.org
菜单是一个类似的 ReSharper 功能
使用 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 中是不可能的。为什么? -> 仅适用于 Item1;项目2。不适用于 .lat .lng.
谢谢
更新
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 如何配置 Visual Studio 2017 以通过启用 Options > Text Editor > C# > Advanced > Using Directives
中的设置自动建议缺失类型的 NuGet 包。
启用 Suggest usings for types in NuGet packages
设置后,丢失元组的快速修复菜单显示 Install package 'System.ValueTuple'
:
Find this type on nuget.org
菜单是一个类似的 ReSharper 功能