List<T>
предназначается для внутреннего пользования в коде приложения. Необходимо постараться не писать общедоступные API, которые принимают или возвращаются List<T>
(рассмотрите использование суперкласса или интерфейса набора вместо этого).
Collection<T>
подачи базовый класс для пользовательских наборов (хотя это может использоваться непосредственно).
Рассматривают использование Collection<T>
в Вашем коде, если нет определенные функции List<T>
, что Вам нужно.
Вышеупомянутое просто рекомендации.
[Адаптированный от: Руководство по проектированию Платформы, Второй Выпуск]
Да, в C # есть блоков итераторов , которые являются конечными автоматами, генерируемыми компилятором.
Если вы хотите реализовать собственный конечный автомат, вы можете создать собственные реализации интерфейсов IEnumerable
и IEnumerator
.
Оба этих подхода выделяются реализация в .NET framework шаблона итератора .
Workflow Foundation (.NET 3.0) имеет рабочий процесс конечного автомата. В настоящее время в 4.0 нет того же самого, но вы определенно можете создать рабочий процесс конечного автомата, используя 4.0.
То, что близко к конечным автоматам, - это рабочие процессы в .NET 3.5, однако рабочие процессы не совсем являются конечными автоматами.
Сила использования конечных автоматов заключается в том, что вы можете их создавать явно в вашем коде, что снижает вероятность создания ошибок. Кроме того, конечно, некоторые системы по своей природе являются автоматами, поэтому их естественнее закодировать так.
Windows Workflow Foundation (WF), которая является частью библиотеки базовых классов в версиях 3.0 и 3.5 включает дизайн рабочего процесса с конечным автоматом для управления конечным автоматом для ваших приложений.
Они полностью переписали рабочий процесс для предстоящего выпуска 4.0, а новые классы WF 4.0 изначально не поддерживают конечные автоматы, но все версии 3.0 / 3.5 классы по-прежнему полностью поддерживаются в версии 4.0.
Я поддерживаю проект с открытым исходным кодом, который реализует (среди прочего) универсальный конечный автомат для .NET. Он построен на основе QuickGraph , поэтому вы можете бесплатно получить множество алгоритмов анализа графов.
См. на этой странице для получения дополнительной информации о проекте, и особенно " Jolt.Automata: Finite State Machines "для получения дополнительной информации об этой функции.