Инициализируйте IList <T> C#

Я не работал над Google или Картами Microsoft или Yahoo прежде, таким образом, я не могу сказать Вам, как они работают.

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

Мы использовали технику под названием ACO (Оптимизация колонии муравьев), чтобы запланировать и направить грузовики. Эта техника является методом AI, который был применен к проблеме коммивояжера для решения проблем маршрутизации. Прием с ACO должен создать ошибочное вычисление, основанное на известных фактах маршрутизации так, чтобы модель решения графика знала, когда выйти (когда достаточно небольшая ошибка).

можно google ACO или TSP для нахождения больше на этой технике. Я не использовал ни одного из инструментов AI с открытым исходным кодом для этого однако, так не может предложить один (хотя я слышал, что РОЙ был довольно всесторонним).

18
задан Charlie Salts 28 August 2009 в 19:57
поделиться

8 ответов

Ошибка связана с тем, что вы пытаетесь создать экземпляр интерфейса .

Измените свой код на:

List<ListItem> allFaqs = new List<ListItem>();

или

IList<ListItem> allFaqs = new List<ListItem>();

, и он должен скомпилировать.

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

Вы можете создать любой конкретный тип, который реализует IList вот так, так

IList<ListItem> test = new ListItem[5];

IList<ListItem> test = new ObservableCollection<ListItem>(allFaqs);

и так далее, все будет работать.

47
ответ дан 30 November 2019 в 05:42
поделиться

Ваша проблема в том, что IList - это интерфейс, а не класс. Вы не можете инициализировать интерфейс.

У вас может быть экземпляр интерфейса, но вам нужно инициализировать его классом, который реализует этот интерфейс, например:

IList<string> strings = new List<string>();

Предыдущая строка кода будет работать, но вы будете вам доступны только члены IList вместо полного набора из того класса, который вы инициализируете.

17
ответ дан 30 November 2019 в 05:42
поделиться

Вам необходимо сделать:

IList<ListItem> allFaqs = new List<ListItem>();

В вашем коде вы пытаетесь инициализировать интерфейс.

2
ответ дан 30 November 2019 в 05:42
поделиться

IList не является классом; это интерфейс, который могут реализовать классы. Сам интерфейс - это просто контракт между потребителем класса и самим классом. Эта строка кода будет работать:

IList<ListItem> allFaqs = new List<ListItem>();

Это поможет?

6
ответ дан 30 November 2019 в 05:42
поделиться

IList - это интерфейс, поэтому вы не можете создать его экземпляр. Все виды классов реализуют IList. Одним из таких классов, реализующих IList, является List. Вы можете создать его так:

List<ListItem> allFaqs = new List<ListItem>();
2
ответ дан 30 November 2019 в 05:42
поделиться

Вы не можете создать экземпляр интерфейса (IList - это интерфейс).

Вам потребуется создать экземпляр, реализующий IList,

например:

IList<ListItem> allFaqs = new List<ListItem>();

Есть и другие типы ILists, но List - хороший вариант для начала.

2
ответ дан 30 November 2019 в 05:42
поделиться

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

IList<ListItem> items = new List<ListItem>();
2
ответ дан 30 November 2019 в 05:42
поделиться

IList - это интерфейс. Вам необходимо создать экземпляр класса, реализующего интерфейс:

IList<ListItem> allFaqs = new List<ListItem>();

List реализует IList , и поэтому может быть назначен переменной. Существуют также другие типы, которые также реализуют IList .

1
ответ дан 30 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

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