问题描述
我想通过使用switch case而不是if语句来改进// Refuse case when validator2 click to send : notator mail + validator 1 copy
if (EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.Refuse))
{
if (EtapeActuelle.Statut.Correspond(StatutWorkflowEnumValues.AValider2))
{
documentContainer.MailTo(mail.AdressesMailDestinataires,mail.AdressesMailDestinatairescopies);
}
}
// Agree case when validor 1 click to send : mail validator 2 + notator copy
else if (EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.AValider2))
{
documentContainer.MailTo(mail.AdressesMailDestinataires,mail.AdressesMailDestinatairescopies);
}
else
{
documentContainer.MailTo(mail.AdressesMailDestinataires);
}
代码。
其实我有这样的东西:
.Correspond()
在这种情况下,当第一个if语句成功执行时,将调用else语句,但我不希望这样。所以我想用开关盒代替。
但是如何使用Enumerables
在switch (EtapeSuivanteAModifier.Statut.Correspond(...))
{
case ( ?? ):
break;
case ( ?? ):
break;
}
方法上设置切换条件?
类似这样的东西:
Scaffold(
body: ListView
)
解决方法
您在if/else if
中都做两次相同的事情
if (EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.Refuse))
{
if (EtapeActuelle.Statut.Correspond(StatutWorkflowEnumValues.AValider2))
{
documentContainer.MailTo(mail.AdressesMailDestinataires,mail.AdressesMailDestinatairesCopies);
}
}
// Agree case when validor 1 click to send : mail validator 2 + notator copy
else if (EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.AValider2))
{
documentContainer.MailTo(mail.AdressesMailDestinataires,mail.AdressesMailDestinatairesCopies);
}
您可以重构条件,例如:
if ((EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.Refuse) // Condition in the if
&& EtapeActuelle.Statut.Correspond(StatutWorkflowEnumValues.AValider2)) // <---^
|| EtapeSuivanteAModifier.Statut.Correspond(StatutWorkflowEnumValues.AValider2)) // Condition in the else if
{
documentContainer.MailTo(mail.AdressesMailDestinataires,mail.AdressesMailDestinatairesCopies); // Same action
}
else
{
documentContainer.MailTo(mail.AdressesMailDestinataires);
}