2017-08-24 4 views
0

このようなことが可能かどうかはわかりません。多分?あなたはおそらくそれのニースの宿泊施設 メソッドの戻り値を使用して同時に複数の変数に代入する

C#7 Tupples

構文的に類似した何かについて尋ねている興味があるだけ...

// Initial values of the strings. 
string variable1 = "Something", variable2 = "SomethingElse"; 

// New values for the strings. ** LEFT OF ASSIGNMENT OPERATOR WON'T COMPILE ** 
(variable1, variable2) = DoSomething(variable1, variable2); 

// Method to modify the initial strings. 
public List<string> DoSomething(string v1, string v2) 
{ ...; return new List<string> { v1, v2 }; } 
+0

のように、[その機能](HTTPSをTuple<T>を使用することができます。 //docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#tuples)はC#7の新機能です。これより古いバージョンでは動作しません。 –

+0

個人的には、私はその機能がLISPプログラミング言語( 'multiple-value-setq'形式)からのみ知っています。メインストリーム言語は関数から1つのオブジェクトのみを返し、ステートメント内で1つの変数を割り当てることができます。ああ、どのように私はそのLISP機能を欠場する... –

答えて

2

は、離れてTuple<T>通常より短い宣言の、あなたが要素を命名していることができるということですこれは、視点コードの読みやすさとメンテナンスの点で大きなメリットです。あなただけセマンティクスの実装のについて尋ねている場合

C#今日で一度に2つのdouble値を返す、あなたは明らかに

Tuple<double, double> = DoSomething();

+0

返信いただきありがとうございます、@ Tigran。タプルは間違いなく私が探しているものですが、私はそれがこの質問の要件を十分に満たしているとは思いません。変数に代入するためには、まだタプルにインデックスでアクセスしなければならないと私は信じています。目的は、メソッドによって返されるものを使用して変数に直接割り当てることです。 –

+2

@GregGreenleaf:なぜ 'out'や' ref'を使わないのですか? – Tigran

+0

私はタプルルをもう少し見て、@ Tigran、私はあなたが正しいと思います。タプルには、私が不思議に思っていたものに完全に当てはまる解体割当てという能力が組み込まれています。正しい方向に向いてくれてありがとう。 '(first、middle、last)= LookupName(id2); //分解を分解する ' –

関連する問題