2017-08-12 227 views
0

我喜欢C#,但是,例如,一个简单的条件,如以下是相当冗长什么它试图达到:是否有一种语言具有这种简化的语法?

if ((ctr == "BT") || (ctr = "B")) { 
    ctrName = "Brian"; 
} else if ((ctr == "G") || (ctr = "GD")) { 
    ctrName = "George"; 
} 

我在想,在一个理想的语言它可以被编码类似:

if ctr: 
    in {"BT", "B"}: ctr = "Brian" 
    in {"G", "GD" }: ctr = "George" 

有没有更像这样的语言?

+0

是那两个单=错别字? – BoltClock

+0

为什么不linq到字典 – Ramankingdom

+0

根据你想匹配什么,一个'RegEx'匹配可能是适当的(不适用于这种情况,但对于你想要匹配更复杂变化的东西)。 –

回答

1

这里有一种语言! C# - 通过扩展方法。

下面是一个示例,使用In扩展方法。

using System; 
using System.Linq; 

namespace Bob 
{ 
    public static class Extensions 
    { 
     public static bool In<T>(this T toCheck, params T[] isItInOneOfThese) 
     { 
      return isItInOneOfThese.Contains(toCheck); 
     } 
    } 

    public class Program 
    { 
     static void Main(string[] args) 
     { 
      var ctrName = ""; 
      var ctr = "BT"; 

      if (ctr.In("BT", "B")) 
      { 
       ctrName = "Brian"; 
      } 
      else if (ctrName.In("G", "GD")) 
      { 
       ctrName = "Brian"; 
      } 
      Console.WriteLine(ctrName); 
      Console.ReadLine(); 
     } 
    } 
} 
5

您可以轻松地做到这一点在许多语言,包括C#,用switch语句:

switch (ctr) 
{ 
    case "BT": 
    case "B": 
     ctrName = "Brian"; 
     break; 

    case "G": 
    case "GD": 
     ctrName = "George"; 
     break; 
} 

降低线的switch语句分解得到稍微接近于您的例子:

switch (ctr) 
{ 
    case "BT": case "B": ctrName = "Brian"; break; 
    case "G": case "GD": ctrName = "George"; break; 
} 

如果这就是对你来说太冗长了,那么在C#中就没有其他选择了。如果你是特别是寻找替代语言,这是该网站的主题。

相关问题