2016-08-21 79 views
-3

我很努力去理解如何將此Java代碼轉換爲C#代碼。任何幫助是極大的讚賞。如何將Java代碼片段轉換爲C#

public enum Direction { 

NORTH(0), EAST(1), SOUTH(2), WEST(3); 
private static Map<Integer, Direction> map = new HashMap<Integer, Direction>(); 

static { 
    for (Direction directionEnum : Direction.values()) { 
     map.put(directionEnum.directionIndex, directionEnum); 
    } 
} 
+0

這應該不難。將此代碼移植到C#時,您將需要數據結構映射。枚舉也存在於C#中。您在代碼片段中使用的for循環最好映射到foreach關鍵字,因爲它不涉及任何計數器。對於HashMap,您應該使用Dictionary數據類型。 – RBT

+0

@RBT:謝謝你的迴應。方向應該像這樣移植enum? public enum方向{NORTH = 0,EAST = 1,...} – Juniuz

+0

是的。那是對的。 – RBT

回答

1

這是您的移植的C#代碼。瞭解Enum.GetValues(typeof(Direction) API是唯一可能阻礙順利移植的問題,如果您不知道的話。希望這可以幫助!

 public enum Direction 
     { 
      NORTH = 0, 
      EAST = 1, 
      SOUTH = 2, 
      WEST = 3 
     } 

     private static Dictionary<int, Direction> map = new Dictionary<int, Direction>(); 

     private static void PortJavaCodeToCSharp() 
     { 
      foreach (var directionName in Enum.GetValues(typeof(Direction))) 
      { 
       map.Add((int)directionName, (Direction)directionName); 
      }  
     } 
+0

很酷。是的,你對'Enum.GetValues(typeof(Direction))'是正確的,我以前沒有用它來獲取枚舉類型的值。謝謝! – Juniuz