2
在下面的方法中,有三個條件。我想用方法替換它們並傳入條件。方法內的臨時方法?
此外,有條件的身體幾乎重複。是否有可能創建一個只存在於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...
}
但在上面,只有一個應返回。
//原始代碼
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"
};
}
}
基本上,我想創建一個方法中的臨時方法。
不確定你想要什麼,但肯定你的本地方法可能只是一個私人方法? –
它可以。我寧願將它放在MyMethod()內,因爲它不需要在外部存在。 – 4thSpace
我不認爲這是可能的,如果你真的關心無意調用該方法,可以使整個事情變成嵌套類,但實際上你有什麼顧慮?如果它是私有的,它甚至不能被派生類調用,因此提供它被明確記錄爲不可用,這是什麼問題? –