C # итераторы и указатели? - PullRequest
       2

C # итераторы и указатели?

0 голосов
/ 31 октября 2010

Я знаю, что в C # нет указателей, но я пытаюсь выяснить, как сделать следующее, что я бы сделал с указателями (или, еще лучше, итераторами) в C ++ (я прохожу курс в C #,но я уже знаю C ++).

Мы получили задание написать простую «магазинную» программу (инвентарь, транзакции и т. д.).Моя первая идея (пришедшая из C ++) заключалась в следующем: иметь связанный список товаров и их количество на складе.Затем имейте класс, представляющий продажу, который имеет список предметов в текущей продаже, где каждый предмет представлен как итератор для определенных предметов в основном списке запаса и значение для суммы.(Надеюсь, это понятно.)

Я пытался сделать то же самое в C #, но не могу понять, как вывести эти итераторы в основной список (желательно, чтобы они были хорошими при обновлении основного списка).).Как ты это делаешь?

Ответы [ 2 ]

2 голосов
/ 31 октября 2010

Вам не нужно делать ничего особенного, чтобы использовать ссылки, они используются по умолчанию в C #.

Я предполагаю, что вы сделаете что-то подобное в C ++:

class Sale {
  public:
    void AddItem(Item* i) {
        items.push_back(i);
    }

  private:
    std::vector<Item*> items;
};

В C #, поскольку он использует ссылки вместо передачи по значению по умолчанию, вы получаете такое поведение по умолчанию.Подобное поведение в C # вы получите из следующего кода:

class Sale {
  private List<Item> items;

  public void AddItem(Item i) {
    items.Add(i);
  }
}

Чтобы вызвать этот код C #, вы можете просто сделать что-то вроде

Item item = new Item("A test item");
Sale sale = new Sale();
sale.AddItem(item);
0 голосов
/ 31 октября 2010

Вам почти наверняка придется написать свой собственный интерфейс в стиле итератора - C #, похоже, не предлагает ничего похожего на такой гибкий.Вы можете написать свои собственные методы расширения и класс, который предлагает это, но вам придется делать это самостоятельно, я уверен, что его нет в стандартных библиотеках .NET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...