以下のメソッドには、3 つの条件があります。それらをメソッドに置き換えて、条件を渡したいと思います。
また、条件付きボディはほぼ繰り返されます。MyMethod() 内でローカルにのみ存在するメソッドを作成することは可能ですか? したがって、以下のコードは次のようになります。
//縮小コード
public ClassZ MyMethod (Class1 class1Var, Class2 class2Var)
{
return localMethod((class1Var.SomeBool && !class2Var.SomeBool), false, "This is string1");
return localMethod((class1Var.SomeBool && !class2Var.IsMatch(class2Var)), true);
return localMethod((class1Var.SomeProperty.HasValue && !class2Var.SomeBool), false, "This is string2");
//...localMethod() defined here...
}
ただし、上記では、1 つだけが返されます。
//元のコード
public ClassZ MyMethod (Class1 class1Var, Class2 class2Var)
{
if(class1Var.SomeBool && !class2Var.SomeBool)
{
return new ClassZ
{
Property1 = false,
String1 = "This is string1"
};
}
if(class1Var.SomeBool && !class2Var.IsMatch(class2Var))
{
return new ClassZ
{
Property1 = true,
};
}
if(class1Var.SomeProperty.HasValue && !class2Var.SomeBool)
{
return new ClassZ
{
Property1 = false,
String1 = "This is string2"
};
}
}
基本的に、メソッド内に一時的なメソッドを作成したいと思います。