我正在开发一个将Matlab代码转换为C#的项目,并且有许多方法具有以下语法:
var1 = 0
var2 = 1
var3 = 3
% Do something with vars
[var1, var2, var3] = someFunction();
...之后,使用有效的返回值正常访问各个变量。
Python的语法允许我将其直接翻译为:
var1, var2, var3 = someFunction()
... someFunction
返回一个元组。目前在C#中是否有任何一种语法糖可以让我以同样的方式做同样的事情?
答案 0 :(得分:2)
没有任何魔法可以使任何类似的语法工作。
C# 有一个元组类(MSDN),所以你可以这样写:
var tupleResult = someFunction();
var1 = tupleResult.Item1;
var2 = tupleResult.Item2;
...
当然,如果函数返回一个数组,你可以分配给各个元素。
close 唯一的内容是传递out
参数:
someFunction(out var1, out var2, out var3);
但这需要someFunction
分配这些变量,很少在语义上是正确的。使用out
通常是一个标志,你走错了路(有一些值得注意的例外,比如TryParse
)。
答案 1 :(得分:1)
为了最佳实践,你不应该在c#中使用元组,这会使你的代码不那么可读。 而是将结果包装在类中:
public class ValueSet
{
public ValueSet(string value1, string value2, string value3)
{
Value1 = value1;
Value2 = value2;
Value3 = value3;
}
public string Value1 { get; set; }
public string Value2 { get; set; }
public string Value3 { get; set; }
}
现在,如果你对这三个变量进行任何操作,你将在这个类中创建一个函数。