Having, say, 5 (or more) tasks (methods) that return true
or false
; I'm after an algorithm syntax to break the chain, if any of the consecutive methods return false
, but continue inward otherwise. Currently, I've constructed a bunch of if blocks chained one inside another; however, seems ugly to me and hard to read with a bunch of arguments.
if (Method_1_Returns(String manyArgs, ...) == true) {
if (Method_2_Returns(String manyArgs, ...) == true) {
if (Method_3_Returns(String manyArgs, ...) == true) {
if (Method_4_Returns(String manyArgs, ...) == true) {
...
}
else {
MethodToShowError(someString_4);
}
}
else {
MethodToShowError(someString_3);
}
}
else {
MethodToShowError(someString_2);
}
}
else {
MethodToShowError(someString_1);
}
I'm planning to convert this into a switch
block but, besides hating the goto
directive, that doesn't seem in accordance with coding standards (or, is it?).
String temp = "1";
switch (temp) {
case "1":
if (Method_1_Returns(String manyArgs, ...)) goto case "2";
MethodToShowError(someString_1);
break;
case "2":
if (Method_2_Returns(String manyArgs, ...)) goto case "3";
MethodToShowError(someString_2);
break;
case "3":
if (Method_3_Returns(String manyArgs, ...)) goto case "4";
MethodToShowError(someString_3);
break;
case "4":
if (Method_4_Returns(String manyArgs, ...)) goto case "5";
MethodToShowError(someString_4);
break;
...
default:
break;
}
Does any better alternative exist in C#? Is the switch
block alternative acceptable?