2

一部の言語では、配列から同時に複数の変数を初期化できます。たとえば、PHP では次のようなことができます。

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

C#でもこれを行うことは可能ですか?

これを、ファイルからすべての行を読み取り、すべての行が 2 語のみであることがわかっているプログラムに適用したいと考えています (それ以上でもそれ以下でもありません)。自分で関数を作成できることは知っていますが (outキーワードを使用して参照によって変数を送信することもできます)、組み込みの機能が存在するかどうかを知りたいです。

可能であれば、コードが他の開発者にとってより読みやすいかもしれないという理由で、これを知りたいと思います。

4

4 に答える 4

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

私はあなたが私の答えを必要としないことに気づきました。(私は当初、「自分で関数を作成できることを知っています...」とは別の方法で理解していました。) おそらく、しかし、それは他の誰かを助けることができます.

于 2012-07-24T12:57:23.000 に答える
2

C# では、

string[] arr1 = new string[] { "one", "two", "three" };
string s1 = arr1[0];
string s2 = arr1[1];
string s3 = arr1[2];
于 2012-07-24T12:55:04.917 に答える
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);
于 2012-07-24T13:19:38.360 に答える
0
char[] array = new char[] {'a','b','c'};
于 2012-07-24T12:55:01.317 に答える