C#使用语法糖将数组拆分为单个变量

时间:2015-02-18 17:34:46

标签: c# matlab syntactic-sugar

我正在开发一个将Matlab代码转换为C#的项目,并且有许多方法具有以下语法:

var1 = 0
var2 = 1
var3 = 3

% Do something with vars

[var1, var2, var3] = someFunction();

...之后,使用有效的返回值正常访问各个变量。

Python的语法允许我将其直接翻译为:

var1, var2, var3 = someFunction()

... someFunction返回一个元组。目前在C#中是否有任何一种语法糖可以让我以同样的方式做同样的事情?

2 个答案:

答案 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; }
}

现在,如果你对这三个变量进行任何操作,你将在这个类中创建一个函数。