c # Массив или Коллекция - PullRequest
       44

c # Массив или Коллекция

3 голосов
/ 21 февраля 2011

Как бы вы подошли к этому? У меня есть список данных, в котором есть две вещи, которые должны быть сохранены: цена и позиция. Есть ли способ сохранить их в массиве, не зная общего числа строк, которые у меня будут? Или я должен использовать коллекцию, она может быть многомерной?

Спасибо

Ответы [ 4 ]

6 голосов
/ 21 февраля 2011

Да - я бы порекомендовал вам посмотреть общий список.Используя это, вы можете смоделировать ваши данные и сохранить столько элементов, сколько захотите.

Например,

  public class PricedItem
    {
        public decimal Price { get; set; }
        public object Item { get; set; }
    }

Затем они могут быть сохранены / извлечены в List<PricedItem> - или как 'список ценовых товаров ».

Надеюсь, это поможет

2 голосов
/ 21 февраля 2011

Используйте List<> некоторого составного типа, который содержит вашу цену и предмет.Существует встроенный тип структуры, называемый KeyValuePair<>, который позволяет хранить строго типизированные ключи (предметы) и значения (цены).A List<KeyValuePair<string, string>> и некоторые Linq позволят вам выполнять поиск на основе строки, ключа или значения.Если вы хотите искать цены на основе позиции, словарь - это набор KeyValuePairs, доступный по Key, который может предоставлять аналогичные функции, но использует другую внутреннюю структуру, поэтому доступ по номеру строки недоступен.

2 голосов
/ 21 февраля 2011

Звучит так, как будто вы должны использовать универсальную коллекцию «словарь», например, идентификатор элемента в качестве ключа и цену в качестве значения.

Если вы хотите иметь больше информации в коллекции, вы даже можете сохранить экземпляры класса элементов в словаре.Так что, если у вашего класса предметов есть свойства, такие как идентификатор, имя, описание, цена, вы можете сделать что-то вроде

Dictionary<int, item> items = new Dictionary<int, item>();
items.add(myitem.id, myitem);

Тогда для любого идентификатора предмета вы можете получить доступ к такой информации, как эта

string description = items[id].description; 
decimal price = items[id].price;
0 голосов
/ 21 февраля 2011

вы могли бы иметь

struct Item
{
    float Price;
    string ItemName;
}

и

List<Item> items = new List<Item>();
items.Add(new Item{Name="item1", Price=19.99});
...