繁体   English   中英

有没有办法减少使用的 if 语句的数量?

[英]Is there a way I can reduce the number of if statements used?

所以基本上我试图减少 if 语句使用的数量。

我需要特定于两种证书类型的消息。 这就是导致问题的原因。 我可以使用 || 和 && 运算符,但随后我需要消息有点模糊,这是我不想要的。

Switch 语句不起作用,因为我正在使用 > 和 < 我已经尝试使用 ? 但无法理解它。

if (compatibilityCerts > 2 && nonCompCerts > 2)
{
    rtbSummaryLog.AppendText(string.Format("There Are More Than Two Compatibility And Non-Compatibility Certificates On This Smart Card. {0}", Environment.NewLine));
    pctCertificateQuantity.BackColor = Color.Red;
    lblCertificateQuantity.Text = "More Than Two Compatibility And Non-Compatibility Certificates Detected";
        }
        else if (compatibilityCerts == 0 && nonCompCerts == 0)
        {
            rtbSummaryLog.AppendText(string.Format("There Are No Certificates On This Smart Card. {0}", Environment.NewLine));
            pctCertificateQuantity.BackColor = Color.Red;
            lblCertificateQuantity.Text = "No Certificates Detected";
        }
        else if (compatibilityCerts < 2 || nonCompCerts < 2)
        {
            rtbSummaryLog.AppendText(string.Format("There Are Certificates Missing On This Smart Card. {0}", Environment.NewLine));
            pctCertificateQuantity.BackColor = Color.Red;
            lblCertificateQuantity.Text = "No Certificates Detected";
        }
        else
        {
            if (compatibilityCerts > 2)
            {
                rtbSummaryLog.AppendText(string.Format("There Are More Than Two Compatibility Certificates On This Smart Card. {0}", Environment.NewLine));
                pctCertificateQuantity.BackColor = Color.Red;
                lblCertificateQuantity.Text = "More Than Two Compatibility Certificates Detected";
            }
            else if (nonCompCerts > 2)
            {
                rtbSummaryLog.AppendText(string.Format("There Are More Than Two Non-Compatibility Certificates On This Smart Card. {0}", Environment.NewLine));
                pctCertificateQuantity.BackColor = Color.Red;
                lblCertificateQuantity.Text = "More Than Two Non-Compatibility Certificates Detected";
            }
            else if (compatibilityCerts == 0)
            {
                rtbSummaryLog.AppendText(string.Format("There Are No Compatibility Certificates On This Smart Card. {0}", Environment.NewLine));
                pctCertificateQuantity.BackColor = Color.Red;
                lblCertificateQuantity.Text = "No Compatibility Certificates Detected";
            }
            else if (nonCompCerts == 0)
            {
                rtbSummaryLog.AppendText(string.Format("There Are No Non-Compatibility Certificates On This Smart Card. {0}", Environment.NewLine));
                pctCertificateQuantity.BackColor = Color.Red;
                lblCertificateQuantity.Text = "No Non-Compatibility Certificates Detected";
            }
            else
            {
                pctCertificateQuantity.BackColor = Color.LightGreen;
                lblCertificateQuantity.Text = "Number of Certificates is Valid";
            }

        }

需要减少 if 语句但保留特定消息。

如果您打算通过使用模式匹配来提高可读性,则可以使用 switch。

var pair = new {Compatibilty=compatibilityCerts ,NonCompatibilty=nonCompCerts };
switch(pair)
{
    case var item when item.Compatibilty > 2 && item.NonCompatibilty > 2:
    // Do Something
    break;
    case var item when item.Compatibilty == 2 && item.NonCompatibilty == 2:
    // Do Something
    break;
    case var item when item.Compatibilty < 2 && item.NonCompatibilty < 2:
    // Do Something
    break;
    case var item when item.Compatibilty > 2 :
    // Do Something
    break;
    case var item when item.NonCompatibilty > 2 :
    // Do Something
    break;
    case var item when item.Compatibilty == 0 :
    // Do Something
    break;
    default:
    // Do Something
    break;
}

暂无
暂无

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

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