2017-08-12 459 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#中就沒有其他選擇了。如果你是特別是尋找替代語言,這是該網站的主題。

相關問題