Это просто извращение while
, чтобы получить семантику goto tidy-up
без использования слова goto.
Это плохая форма, потому что, когда вы используете другие петли внутри внешнего while
, breaks
становятся двусмысленными для читателя. «Предполагается ли это, что он должен выйти?» или это предназначено только для выхода из внутреннего цикла? »
В .NET Framework такого класса нет, но вы можете взглянуть на то, как класс CompositeCommand реализован в Prism.
Из документов :
Поддерживается список дочерних команд (экземпляры
blockquote>DelegateCommand
). МетодExecute
классаCompositeCommand
просто вызывает методExecute
для каждой дочерней команды по очереди. МетодCanExecute
аналогично вызывает методCanExecute
каждой дочерней команды, но если какая-либо из дочерних команд не может быть выполнена, методCanExecute
вернетfalse
. Другими словами, по умолчанию,CompositeCommand
может выполняться только тогда, когда могут быть выполнены все дочерние команды.Вы связываете дочерние команды, используя метод
RegisterCommand
классаCompositeCommand
:public DelegateCommand UpdateCommand { get; private set; } public ViewModel() { UpdateCommand = new DelegateCommand(Update); ApplicationCommands.SaveCommand.RegisterCommand(UpdateCommand); }