多个返回案例的条件 ifs

Leo*_*rdo 1 c# design-patterns

我有以下条件一个类和一个方法

public class ReturnParameter
   {
      public string v1 {get; set;} 
      public string v2 {get; set;} 
      public string v3 {get; set;} 
   }


  public string RideCombination(ReturnParameter retor)
  {
     var v1 =  retor.v1;
     var v2 =  retor.v2;
     var v3 =  retor.v3;


     // case 1
     if(v1 == "A" && v2 == "b" && v3 == "C" ) 
       return  "valid 1 "

     // case 2
     if(v1 == "C" && v2 == "A" && v3 == "C" ) 
       return  "valid 2 "

    // case 3
     if(v1 == "D" && v2 == "T" && v3 == "C" ) 
       return  "valid 3 "

   // case 4
     if(v1 == "A" && v2 == "B" && v3 == "C" ) 
       return  "valid 4 "

  }
Run Code Online (Sandbox Code Playgroud)

假设我有 20 个条件我将不得不 20 个 ifs 来返回 20 个不同的组合,有什么办法可以消除多个条件而不必一一执行?

Xia*_*312 5

您可以使用值元组和返回值的字典:

var mapping = new Dictionary<(string, string, string), string>
{
    [("A", "b", "C")] = "valid 1",
    // ...
};

if (mapping.TryGetValue((retor.v1, retor.v2, retor.v3), out var result))
{
    return result;
}
else
{
    // when none match...
}
Run Code Online (Sandbox Code Playgroud)