C#7の新しいタプル機能を使用すると、型から派生した名前でフィールドにアクセスできるようになります。
public (double lat, double lng) GetLatLng(string address) { ... }
var ll = GetLatLng("some address");
Console.WriteLine($"Lat: {ll.lat}, Long: {ll.lng}");
これは.NETCoreでは不可能です。どうして? -> Item1でのみ機能します;Item2。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が示していますOptions > Text Editor > C# > Advanced > Using Directives
の設定を有効にして、不足しているタイプのNuGetパッケージを自動的に提案するようにVisual Studio2017を構成する方法。
Suggest usings for types in NuGet packages
設定を有効にすると、欠落しているタプルのクイック修正メニューにInstall package 'System.ValueTuple'
が表示されます。
Find this type on nuget.org
メニューは同様のReSharper機能です