2017-08-24 46 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); //解构作业' –

相关问题