有没有办法从一个数组初始化几个变量?

时间:2012-07-24 12:52:46

标签: c#

在某些语言中,可以从数组中同时初始化多个变量。 例如,在PHP中,您可以执行以下操作:

$array = array('a', 'b', 'c');
list($a, $b, $c) = $array;

是否可以在C#中执行此操作?

我想在一个程序中应用它,我从文件中读取所有行,我知道每行只有两个单词(从不多,从不少)。 我知道我可以自己创建函数(并使用out关键字通过引用发送变量)但我想知道是否存在任何内置函数。

我想知道这主要是因为如果有可能代码可能对其他开发人员更具可读性。

4 个答案:

答案 0 :(得分:2)

在C#中,

string[] arr1 = new string[] { "one", "two", "three" };
string s1 = arr1[0];
string s2 = arr1[1];
string s3 = arr1[2];

答案 1 :(得分:2)

如果可读性是问题,如果我理解正确 - 我不知道内置方式。但是你可以为它创建一个函数。

void Doit(out string one, out string two, string[] input)
{
    one = input[0];
    two = input[1];
}

然后使用它:

string[] s = new string[] { "First", "Second" };
string a, b;
Doit(out a, out b, s);

我刚才意识到你不需要我的回答。 (我最初理解“我知道我可以自己创造这个功能......”。)或许,它可以帮助别人。

答案 2 :(得分:0)

char[] array = new char[] {'a','b','c'};

答案 3 :(得分:0)

据我所知,没有可行的方法。

实现该功能的一种好方法是使用扩展方法以提高可读性。

只需在扩展方法中编写所需的代码,该方法可以附加到您想要初始化的类型,如上例中的列表,并将数组作为该函数的输入:

public static class Extensions {

    public static void initFromArray<T> (this List<T> list, T[] array) {

        for (int i = 0; i < array.Length; i++) {

            list[i] = array[i];
        }
    }
}

然后您可以使用此方法,例如,如下所示:

int[] array = new int [] { 1, 4, 6, 2, 5 };

List<int> list = new List<int>();

for (int i = 0; i < 4; i++) list.Add(0);

list.initFromArray<T>(array);