2011-10-13 54 views
1

我有一堆像下面列出的Id結構數組喜歡移植到C#。這是一個大項目的一部分。我怎樣才能在C#中輕鬆實現這樣的事情?比如分組變量?我知道一個班級會做,但要做這樣的事情,也許必須創建一些嵌套類?移植matlab結構數組到C#

robot.task.mapBuilding.exploration.isExploring = 0; 
robot.task.mapBuilding.exploration.initialiseAreaExploration = 1; 
robot.task.mapBuilding.exploration.isInExplorationArea = -1; 
robot.task.mapBuilding.exploration.lists.canRequestNewTask = 1; 
robot.task.mapBuilding.exploration.lists.requestNewTask = []; 
robot.task.mapBuilding.exploration.lists.receivedNewTask = []; 

在此先感謝

+0

你是在尋找手動移植還是編寫一些代碼來自動執行它? – ChrisBD

+0

手動課程。這是一個擁有1000條線條的大項目。如果有一種優雅的方式自動移植它會很好。不幸的不是。即時通訊,使其與微軟機器人平臺兼容。 – nixgadgets

回答

2

我不知道MATLAB什麼,而是基於你已經證明了什麼上面,你可以有一個類庫與robot.task.mapbuilding命名空間,但它需要一些類和嵌套爲你說。 例如一個exploration類,它包含一個lists類:

namespace robot.task.mapBuilding 
{ 
    public class lists 
    { 
     public lists() 
     { 
      _canRequestNewTask= true; 
     } 
     private bool _canRequestNewTask; 
     private string _requestNewTask; 
     private string _receivedNewTask; 
     public bool CanRequestNewTask {get{return _canRequestNewTask;}set{_canRequestNewTask=value;}} 
     public string RequestNewTask{get{return _requestNewTask;}set{_requestNewTask=value;}} 
     public string ReceivedNewTask {get{return _receivedNewTask;}set{_receivedNewTask=value;}} 
    } 

    public class exploration 
    { 
     public exploration() 
     { 
      isExploring = false; 
      initialiseAreaExploration = true; 
      isInExplorationArea = -1; 
     } 
     private bool _isExploring; 
     private bool _initialiseAreaExploration; 
     private bool _isInExplorationArea; 
     private lists _lists; 

     public bool IsExploring {get{return _isExploring;} set{_isExploring = value;}} 
     public bool InitialiseAreaExploration{get{return _initialiseAreaExploration;}set{_initialiseAreaExploration=value;}} 
     public bool IsInExplorationArea {get{return _isInExplorationArea;}set{_isInExplorationArea=value;}} 
     public lists Lists {get{return _lists;}set{_lists=value;}} 
    } 
} 

編輯

如果你不打擾關於建築價值的驗證或初始化那麼這可能是wittled到:

namespace robot.task.mapBuilding 
{ 
    public class lists 
    { 
     public bool CanRequestNewTask {} 
     public string RequestNewTask {} 
     public string ReceivedNewTask {} 
    } 

    public class exploration 
    { 
     public bool IsExploring {} 
     public bool InitialiseAreaExploration {} 
     public bool IsInExplorationArea {} 
     public lists Lists {} 
    } 
} 

請注意,我一直遵循以大寫字母開頭的屬性命名約定,儘管我沒有這樣做過類(我支持構成我應該做的真的)。

+0

謝謝克里斯。你有沒有看到任何損害設置變量公開沒有獲取和設置? – nixgadgets

+1

否 - 如果您不希望對他們執行任何操作,那麼您可以作爲我添加的示例。 – ChrisBD