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

C# Split array into individual variables using syntactic sugar

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

var1 = 0
var2 = 1
var3 = 3

% Do something with vars

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

...之后可以使用有效的 return 值正常访问各个变量。

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

var1, var2, var3 = someFunction()

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

没有任何魔法可以使任何类似的语法起作用。

C# 有一个元组 class (MSDN),所以你可以这样写:

var tupleResult = someFunction();
var1 = tupleResult.Item1;
var2 = tupleResult.Item2;
...

当然,如果函数返回一个数组,您可以将其分配给各个元素。

唯一 close 将作为 out 参数传递:

someFunction(out var1, out var2, out var3);

但这需要someFunction分配那些变量,很少在语义上是正确的。使用 out 通常 表明您走错了路(有一些值得注意的例外,例如 TryParse)。

为了最佳实践,您不应在 C# 中使用元组,这会降低您的代码的可读性。 相反,将结果包装在 class:

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

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