ジョーは種類のそれに私を打つが、ここでは基本的にルールが設定されたパターンマッチングアルゴリズムを実装し、それを行うための別の非スイッチ方法は、です。
private static string GetSomeStringOrOther(string subArea)
{
// Create a set of pattern matching functions...
Func<string, string, bool> matchEquals = (a, b) => a.Equals(b);
Func<string, string, bool> matchStarts = (a, b) => a.StartsWith(b);
// Create a rule set...
Tuple<string, string, Func<string, string, bool>>[] cases = new []
{
new Tuple<string, string, Func<string, string, bool>>("4100", "ABC", matchEquals),
new Tuple<string, string, Func<string, string, bool>>("4101", "ABC", matchEquals),
new Tuple<string, string, Func<string, string, bool>>("4102", "ABC", matchEquals),
new Tuple<string, string, Func<string, string, bool>>("4200", "ABC", matchEquals),
new Tuple<string, string, Func<string, string, bool>>("600A", "XWZ", matchEquals),
new Tuple<string, string, Func<string, string, bool>>("3*", "123", matchStarts),
new Tuple<string, string, Func<string, string, bool>>("03*", "123", matchStarts),
};
// Look for a match...
foreach(var matchCase in cases)
{
if(matchCase.Item3(subArea, matchCase.Item1))
{
// Return if it matches...
return matchCase.Item2;
}
}
// Otherwise return the default...
return "ABCXYZ123";
}
利点
- 新しいルールが必要な場合は、ルール・セットに追加するのは簡単です。
- 新しいパターンマッチング機能が必要な場合は、再び簡単に追加できます。
- ルールが変更された場合、大幅な再作業は必要ありません。
デメリット
- /初級、さらにいくつかの中間の開発者初心者は何が起こっているの手掛かりを持っていない可能性があります。
改善
if/elseを使う必要があります。 – adv12
私はあなたがまだ他のすべての値のスイッチを使用し、StartsWithコードをデフォルトのケースに入れることができると思います... – adv12