C# включает конечные автоматы?

List<T> предназначается для внутреннего пользования в коде приложения. Необходимо постараться не писать общедоступные API, которые принимают или возвращаются List<T> (рассмотрите использование суперкласса или интерфейса набора вместо этого).

Collection<T> подачи базовый класс для пользовательских наборов (хотя это может использоваться непосредственно).

Рассматривают использование Collection<T> в Вашем коде, если нет определенные функции List<T>, что Вам нужно.

Вышеупомянутое просто рекомендации.

[Адаптированный от: Руководство по проектированию Платформы, Второй Выпуск]

27
задан Steve Guidi 29 January 2010 в 18:37
поделиться

5 ответов

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

Если вы хотите реализовать собственный конечный автомат, вы можете создать собственные реализации интерфейсов IEnumerable и IEnumerator .

Оба этих подхода выделяются реализация в .NET framework шаблона итератора .

0
ответ дан 28 November 2019 в 05:26
поделиться

Workflow Foundation (.NET 3.0) имеет рабочий процесс конечного автомата. В настоящее время в 4.0 нет того же самого, но вы определенно можете создать рабочий процесс конечного автомата, используя 4.0.

8
ответ дан 28 November 2019 в 05:26
поделиться

То, что близко к конечным автоматам, - это рабочие процессы в .NET 3.5, однако рабочие процессы не совсем являются конечными автоматами.

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

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

Windows Workflow Foundation (WF), которая является частью библиотеки базовых классов в версиях 3.0 и 3.5 включает дизайн рабочего процесса с конечным автоматом для управления конечным автоматом для ваших приложений.

Они полностью переписали рабочий процесс для предстоящего выпуска 4.0, а новые классы WF 4.0 изначально не поддерживают конечные автоматы, но все версии 3.0 / 3.5 классы по-прежнему полностью поддерживаются в версии 4.0.

1
ответ дан 28 November 2019 в 05:26
поделиться

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

См. на этой странице для получения дополнительной информации о проекте, и особенно " Jolt.Automata: Finite State Machines "для получения дополнительной информации об этой функции.

6
ответ дан 28 November 2019 в 05:26
поделиться
Другие вопросы по тегам:

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