2012-06-23 5 views
3

Так что в данный момент у меня есть многомерный массивДолжен ли я использовать списки?

string[,] items = new string[100, 4]; 

я собрать необходимые материалы, чтобы поместить их в массив, а затем отображать их в ListBox

items[itemcount, 0] = id; 
items[itemcount, 1] = newprice; 
items[itemcount, 2] = quant; 
items[itemcount, 3] = desc; 

listBox1.Items.Add(items[itemcount, 0] + "\t" + items[itemcount, 3] + "\t " + items[itemcount, 2] + "\t " + items[itemcount, 1]); 
listBox1.SelectedIndex = listBox1.Items.Count - 1; 

Итак, то пользователь может если они хотят выбрать элемент из списка для удаления этого элемента. Когда дело дошло до удаления элемента, я понял, что массив не подходит. Поэтому я должен создать 4 разных списка и использовать метод list.Remove, чтобы удалить их, или есть лучший способ, которым я не должен работать над четырьмя разными вещами, также у пользователя работает более старый компьютер с WinXP, мне придется беспокоиться о производительность с 4 различными списками? Есть ли что-нибудь такое, как многомерный список?

Благодарность кучи за вашу помощь

+0

Попробуйте посмотреть в 'Словарь ' –

ответ

7

Вы пытаетесь изобрести список экземпляров класса. Что-то вроде

class Item { 
    public int Id {get;set;} 
    public double Price {get;set;} 
    public double Quantity {get;set;} 
    public string Description {get;set;} 
} 

var myItems = new List<Item>(); 
+1

Это очень хороший пример того, как списки могут помочь вам в этой ситуации. –

+0

Рассмотрите возможность изменения цены на «десятичный» для дополнительного кредита. – recursive

+0

Хорошо, только один вопрос, они проиндексированы? Могу ли я пойти myItems [2] или что-то подобное, чтобы получить второй элемент? а затем, когда дело доходит до удаления, я прохожу через каждый, чтобы найти, какой индекс он есть, и идем myItems [2] .Remove() или что-то еще? – MosesIAmnt

3

С количеством данных, которые вы будете работать с вами на самом деле не видят никаких проблем с производительностью.

Любой тип коллекции ли это быть List<T>, Dictionary<T, T>, IEnumerable<T>, или все, что вы хотите использовать, он предоставит вам больше функциональных возможностей, чем массив будет.

2

Похоже, у вас есть один сложный тип, который вы должны ввести в список. Не уверен, что имена правильные, но что-то вроде этого похоже на то, что вы хотите.

public class InventoryEntry 
{ 
    public string Id {get;set;} 
    public double NewPrice {get;set;} 
    public int Quantity {get;set;} 
    public string Description {get;set;} 

    public override ToString() 
    { 
      //return your specially formatted string here 
    } 
} 
var items = new List<InventoryEntry>(); 
//add some items 
//add them to your listbox 
//etc...