Вопрос по c#, arrays, list – Многомерный список C #

4

Мне нужно создать многомерный защитный список из трех значений & # x200B; & # x200B ;, X, Y и Z, и мне нужен список, который заключается в том, что после запроса значения массив должен быть удален.

Запрос будет выглядеть примерно так: List [0] [0] = X, List [0] [a] = Y и List [0] [2] = X, так что я могу удалить только индекс 0, а он уже удалить все остальные три.

Ваш Ответ

4   ответа
0

что следую вашей логике, поскольку вы используете и строки, и целые числа в качестве второго индексатора, и ссылаетесьX дважды, но неZ, Предполагая, что это опечатки, я собираюсь угадать, что вы хотите.

Рассматривали ли вы пользовательский тип сX, Y, А ТАКЖЕZ Свойства и индексатор, чтобы дать вам поведение, которое вы описали:

Вы также не упоминаете, какие типы являются вашими значениями, поэтому я использую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 элементов. Если он не будет последовательным, то один из других ответов достаточно для ваших нужд.

0

но, возможно, то, что вы ищете, может быть достигнуто с помощью массива массивов? Вот как все-таки реализованы многомерные массивы в некоторых языках.

В вашем случае вы можете использовать Список списков: Список & gt ;. И это удовлетворило бы ваше требование удалить "все остальные три" удалив первый элемент во внешнем списке & lt; & gt; объект.

Error: User Rate Limit Exceeded Vinícius Albino
Error: User Rate Limit Exceeded
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
0

но ваш вопрос немного сложен для понимания, но я постараюсь ответить на него. Пожалуйста, не меняйте слова Array и List, поскольку они являются разными, но связанными идеями в C #. Я считаю, что вы имеете в виду Array с использованием [] скобок. Хотя вы можете рассмотреть возможность использования списков, поскольку у них есть хороший способ удалить определенные элементы из списка с помощью этого элемента. в MSDN есть хорошая информация о том, как вы можете действовать. Список (T). Удалить метод

список будет сам реструктурирован для удаления или добавления элементов по желанию.

Похожие вопросы