C# 重构if语句

C# 重构if语句,c#,refactoring,C#,Refactoring,重构“if”语句的最佳方法是什么 我的方法片段: if (code == SystemCode.Enum1.ToString()) { user.IsEnum1 = result != null; } if (code == SystemCode.Enum2.ToString()) { user.IsEnum2 = result != null; } if (code == SystemCode.Enum3.ToString()) { user.IsEnum3 =

重构“if”语句的最佳方法是什么

我的方法片段:

if (code == SystemCode.Enum1.ToString())
{
    user.IsEnum1 = result != null;
}

if (code  == SystemCode.Enum2.ToString())
{
    user.IsEnum2 = result != null;
}

if (code  == SystemCode.Enum3.ToString())
{
    user.IsEnum3 = result != null;
}

我会尝试这种方法:

enum MyEnum
{
    Enum1, 
    Enum2, 
    Enum3
}

class User
{
    Dictionary<MyEnum, bool> enumList;

    public void InitEnumList()
    {
        enumList = new Dictionary<MyEnum, bool>();
        foreach (var item in Enum.GetValues(typeof(MyEnum)))
        {
            //Set the default key-value pairs
            enumList.Add((MyEnum)item, false);
        }
    }
}
enum MyEnum
{
列举1,
第二项,
枚举3
}
类用户
{
词典列表;
public void InitEnumList()
{
enumList=新字典();
foreach(Enum.GetValues中的变量项(typeof(MyEnum)))
{
//设置默认的键值对
enumList.Add((MyEnum)项,false);
}
}
}

Switch语句是避免多个if语句的一个很好的选择

尝试以下方法:

if ((  !(code != ((int)SystemCode.Enum1).ToString() || (user.IsEnum1 = result != null).ToString().Length > 0))
    || !(code != ((int)SystemCode.Enum2).ToString() || (user.IsEnum2 = result != null).ToString().Length > 0)
    || !(code != ((int)SystemCode.Enum3).ToString() || (user.IsEnum3 = result != null).ToString().Length > 0))
    {
        return;
    }

我知道这看起来很复杂,但这不是你想要的吗。如果您有任何疑问,请告诉我。

这样做会更好。也可以考虑使用多个<代码> if语句< /代码>,或者至少如果s@zrabzdn我不喜欢别的,如果真的?为什么?有什么特殊的原因吗?@ SONER GUN NUL:因为如果需要枚举…我必须创建n个计数,如果你可以考虑“开关”语句,或者重构你的<代码>用户< /Cord>对象,并将其用作<代码> if(结果!= null)用户.EnUM=代码;<代码>