Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 重新编写相同逻辑的最佳方法是什么?_C# - Fatal编程技术网

C# 重新编写相同逻辑的最佳方法是什么?

C# 重新编写相同逻辑的最佳方法是什么?,c#,C#,//如何以最简洁的方式重新编写相同的逻辑 if ((ddl1.SelectedValue == "1") || (ddl1.SelectedValue == "100")) { if (Fee > 0) { Messages += " [Please the check fee and ddl1 type selected] "; } } else if ((ddl1.SelectedValue == "2") || (ddl1.Selected

//如何以最简洁的方式重新编写相同的逻辑

if ((ddl1.SelectedValue == "1") || (ddl1.SelectedValue == "100"))
{
    if (Fee > 0)
    { 
        Messages += " [Please the check fee and ddl1 type selected] "; 
    }
}
else if ((ddl1.SelectedValue == "2") || (ddl1.SelectedValue == "200"))
{
    if (Fee == 0)
    { 
        Messages += " [Please the check fee and ddl1 type selected] "; 
    }
}
最里面的括号是可选的,用于向读者澄清,而不是编译


如果您完全确定
SelectedValue
永远不会是除1100、2或200以外的任何内容,则可以进一步合并
(ddl1.SelectedValue==“1”| | ddl1.SelectedValue==“100”)
ddl1.SelectedValue.StartsWith(“1”)
。如果所选值包含其他值或是total domain可能会更改,则StartWith将变得脆弱。

警告您不要使用
.StartWith
拉取Windows 9。不过,对您的代码最好的改进是格式化+缩进。可能最好继续问。您可以编写一个
switch case语句
,将值作为字符串处理,就像处理一个范围。您熟悉如何在不使用if语句的情况下检查case语句中的2个值吗。。?将SelectedValue.ToString()赋值给一个变量,并对其进行大小写。else if链有多大?链的每一部分只检查两个值吗?我是MethodMan-switch的,这里更清楚。我认为这不符合费用检查的精神。根据OP中的代码,如果费用小于或等于0,则显示值1和100的消息可能无效。同样,如果费用不等于0,则显示值为2和200的消息是无效的。虽然这可能会回答问题,但不赞成只显示代码答案。请同时向OP提供解释,以解释您的答案。我会把收费条件放在第一位,这样他们就会先短路。通过在那里重新排序,您可能会少做2次检查。如果是绿地项目,我可能也会这样做。但是,将费用检查放在最后一位会更严格地遵守原始代码的结构。如果我要优化代码,我要做的第一件事就是删除字符串串联,这将比一些比较造成更大的时间消耗。诚然,这些字符串比较的事实确实让我感到困扰。
string[] ValidValues = {"1", "100", "2", "200"};
if(Fee >= 0){
    Messages += Array.IndexOf(ValidValues, ddl1.SelectedValue) == -1 ? "" : " [Please the check fee and ddl1 type selected] ";
}
if (((ddl1.SelectedValue == "1" || ddl1.SelectedValue == "100") && Fee > 0) ||
    ((ddl1.SelectedValue == "2" || ddl1.SelectedValue == "200") && Fee == 0 ))
{
    Messages += " [Please the check fee and ddl1 type selected] ";
}