将matlab结构数组移植到c#

本文关键字:数组 matlab 结构 | 更新日期: 2023-09-27 18:11:02

我有一堆结构数组,如下面列出的,我想移植到c#。这是一个大项目的一部分。如何在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 = [];

Thanks in advance

将matlab结构数组移植到c#

我对matlab一无所知,但根据您上面所示,您可以拥有一个具有robot.task.mapbuilding名称空间的类库,但它需要一些类和嵌套。例如包含lists类的exploration类:

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;}}
   }
}

编辑

如果你不介意构造时的值验证或初始化,那么可以简化为:

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 {}
    }
}

请注意,我保持了以大写字母开头的属性命名约定,尽管我没有对类这样做(我认为我应该这样做)。