2017-08-24 66 views
0

因此,我不確定這樣的事情是否有可能。也許?只是好奇...使用方法的返回同時分配給多個變量

// 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: //docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-7#tuples)對於C#7來說是新的 - 它不會在任何比這更早的版本中工作。 –

+0

就我個人而言,我只知道LISP編程語言('multiple-value-setq'形式)的功能。主流語言只能從函數返回一個對象,並在語句中分配一個變量。哦,我多麼想念LISP功能...... –

回答

2

你可能被問語法類似於

C#7 Tupples

它的尼斯酒店,除了比平時Tuple<T>短申報的東西,就是你可以有一個名爲元素從代碼可讀性和維護角度來看,這是一個很大的問題。

如果你問只語義執行:返回一次2個double值與C#今天,你明明可以使用Tuple<T>,像

Tuple<double, double> = DoSomething();

+0

感謝您的回覆,@Tigran。元組絕對是我將要研究的內容,但我不認爲它滿足了這個問題的要求。我相信我仍然需要通過索引來訪問元組,以便分配給變量。目標是使用方法返回的內容直接分配給變量。 –

+2

@GregGreenleaf:爲什麼不使用'out'或'ref'呢? – Tigran

+0

我更加註意元組@Tigran,我認爲你是對的。元組有一種內置的能力,稱爲解構任務,完全符合我想知道的。所以謝謝你指點我正確的方向。 '(first,middle,last)= LookupName(id2); //解構作業' –

相關問題