2016-12-14 79 views
0

假设我有一个固定大小的数组N,有没有办法将元素映射到N个变量名称列表?如何映射变量名称到数组索引

我想的是一样的东西:

variable1, variable2, variable3 = arrayOfSize3; 

编辑

有几个人说,这将是无用的,建议我做错了什么。也许我是,但这是动态语言中一个非常常见的特性,所以我希望C#有一些优雅的选择。

如果有帮助,我可以写出我需要的东西。我已经解析了一个HTML表格并且有一个表示表格行的字符串数组。我创建了一个类来表示包含表示数据的变量的行,但是要存储我必须手动为每个数组元素设置名称的数据。我知道还有其他方法可以做到这一点,但是我比其他任何方面都好奇,因此,映射变量的正确方法是什么?

+1

你似乎已经错过了数组的整点... – John3136

+1

我不知道为什么你会想这样做。 – itsme86

+0

我认为[这](http://stackoverflow.com/questions/20857773/create-dynamic-variable-name)几乎是一样的你的问题,谷歌是有帮助的 – shakram02

回答

0

不生产做好准备,但你可以做到这一点在C#7预览附带的Visual Studio 15预览。使用解构匹配,下面的代码与元组

var (variable1, variable2, variable3) = tupleOfSize3; 

该功能的实际工作有什么用解构的方法是这样

public void Deconstruct(out T1 x1, ..., out Tn xn) { ... } 

也许阵列都会有这样的扩展。请参见What's new in C# 7.0

1

他们没有这样的任务,但你可以这样做:

var variable1 = arrayOfSize3[0]; 
var variable2 = arrayOfSize3[1]; 
var variable3 = arrayOfSize3[2]; 
0

元组是一组固定数值,每个值都有其自己的名称和类型。另一方面,数组是一组可变数量的匿名值,全部是相同的类型。这是聚合类型的两种非常不同的形式,它们确实服务于大多数不相关的用例。

话虽如此,它可以解构一个数组(在C#7预览附带的Visual Studio 15预览)!您可以通过添加自己的解构方法扩展方法做到这一点:

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