4

X、Y、Zの3つの値の多次元ガードリストを作成する必要があります。また、値が照会されたら配列を削除する必要があるため、リストが必要です。

クエリは次のようになります。List[0][0]= X、List [0] [a] = Y、List [0] [2] = Xなので、インデックス0のみを削除できます。他の3つすべてを削除します。

4

4 に答える 4

4

多次元リストを作成する必要がある場合は、いつでも次のようなリストのリストを作成できます。

var multiDimensionalList = new List<List<string>>{
    new List<string>{"A","B","C"},
    new List<string>{"D","E","F"},
    new List<string>{"G","H","I"},
};
Console.WriteLine(multiDimensionalList[2][1]); // Prints H

multiDimensionalList[2].RemoveAt(1);
Console.WriteLine(multiDimensionalList[2][1]); // Prints I

multiDimensionalList[2][1] = "Q";
Console.WriteLine(multiDimensionalList[2][1]); // Prints Q

ただし、割り当てによって存在しない値を置き換えようとすると、例外がスローされることに注意してください。

multiDimensionalList[2][5] = "R"; // Throws an ArgumentOutOfRangeException
于 2012-04-17T02:13:00.483 に答える
0

あなたの質問を理解するのは非常に難しいですが、おそらくあなたが探しているものは配列の配列で達成することができますか?これは、多次元配列がとにかくいくつかの言語で実装される方法です。

あなたの場合、あなたはリストのリストを使用しているかもしれません:リスト>。そしてこれは、外側のList <>オブジェクトの最初の要素を削除することにより、「他の3つすべて」を削除するという要件を満たします。

于 2012-04-17T02:12:01.550 に答える
0

申し訳ありませんが、あなたの質問は少しわかりにくいですが、私はそれを突き刺します。配列とリストという単語は、C#では異なるが関連するアイデアであるため、交換しないでください。[]角かっこを使用した配列を意味すると思います。リストを使用すると、リストから特定の要素を削除するための優れた方法があるため、リストの使用を検討することをお勧めします。MSDNには、どのように進めるかについてのいくつかの良い情報があります。 List(T).Removeメソッド

リストはそれ自体を再構築して、必要に応じて要素を削除または追加します。

于 2012-04-17T02:12:02.243 に答える
0

2番目のインデクサーとして文字列と整数の両方を使用し、X2回参照しているため、ロジックに従っているのかわかりませんが、ではありませんZ。これらがタイプミスであると仮定して、私はあなたが何を望んでいるかを推測するつもりです。

X、、YANDZプロパティ、およびインデクサーを使用して、説明した動作を提供するカスタムタイプを検討しましたか。

また、値がどのタイプであるかについても言及していないので、私はを使用してobjectいますが、独自のタイプ(またはジェネリック型)に自由に置き換えてください

public class MyType
{
    private object[] backingArray = new object[3];
    public object this[int index]
    {
        get { return backingArray[index]; }
        set { backingArray[index] = value; }
    }

    public object X 
    {
        get { return backingArray[0]; }
        set { backingArray[0] = value; }
    }
    public object Y
    {
        get { return backingArray[1]; }
        set { backingArray[1] = value; }
    }
    public object Z 
    {
        get { return backingArray[2]; }
        set { backingArray[2] = value; }
    }
}

次に、次のように使用できます。

List<MyType> list = new List<MyType>();
list = PopulateList();  // fill list with values


var x = list[0][0];
var y = list[0][1];
var z = list[0][2];

もちろん、この実装は、常に3つの要素で構成される2次元に依存します。それが一貫していない場合は、他の答えの1つがあなたのニーズに満ちています。

于 2012-04-17T02:32:55.013 に答える