繁体   English   中英

重写 if 语句以使用 C# 切换大小写

[英]Rewrite if statement to switch case with C#

我想通过使用 switch case 而不是 if 语句来改进我的C#代码。 实际上,我有这样的东西:

// 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);
}

在这种情况下,当第一个 if 语句成功时,将调用 else 语句,我不希望这样。 所以我想用开关盒代替。

但是如何使用Enumerables.Correspond()方法上设置切换条件?

像这样:

switch (EtapeSuivanteAModifier.Statut.Correspond(...))
{ 
    case ( ?? ):
        break;
    case ( ?? ):
        break;
}

你在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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM