假设我有一个固定大小为N的数组,有没有办法将元素映射到N个变量名列表?
我想的是:
variable1, variable2, variable3 = arrayOfSize3;
修改:
有些人评论说这没用,并暗示我做错了什么。也许我是,但这是动态语言中非常常见的功能所以我希望C#有一些优雅的选择。
如果有帮助,我可以写出我需要的东西。我已经解析了一个HTML表,并有一个表示该行一行的字符串数组。我创建了一个类来表示具有表示数据的变量的行,但是为了存储我必须手动为每个数组元素设置名称的数据。我知道还有其他方法可以做到这一点,但我想知道更多的是出于好奇而不是其他什么,映射变量的正确方法是什么?
答案 0 :(得分:1)
他们不是这样的任务,但你可以这样做:
var variable1 = arrayOfSize3[0];
var variable2 = arrayOfSize3[1];
var variable3 = arrayOfSize3[2];
答案 1 :(得分:0)
尚未准备好生产,但您可以在Visual Studio 15预览附带的C#7预览中执行此操作。使用解构匹配,以下代码适用于元组
var (variable1, variable2, variable3) = tupleOfSize3;
此功能实际上适用于任何具有此类
的解构器方法的功能public void Deconstruct(out T1 x1, ..., out Tn xn) { ... }
也许数组会有这个扩展名。请参阅What's new in C# 7.0
答案 2 :(得分:0)
元组是一组固定数值,每个值都有自己的名称和类型。另一方面,数组是一组可变数量的匿名值,所有这些都是相同的类型。这是两种截然不同的聚合类型,它们实际上主要用于不相交的用例。
话虽如此,可以解构一个数组(在Visual Studio 15预览版附带的C#7预览版中)!您可以通过添加自己的Deconstruct方法作为扩展方法来实现:
class C
{
public static void Main()
{
int[] x = new int[2];
var (a, b) = x;
}
}
static class ArrayUtilities
{
public static void Deconstruct(this int[] data, out int a, out int b)
{
a = data[0];
b = data[1];
}
}