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 中创建一个函数。
我正在做一个将 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 中创建一个函数。