Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#行动/类别_C#_Class_Object_Action - Fatal编程技术网

C#行动/类别

C#行动/类别,c#,class,object,action,C#,Class,Object,Action,我必须设计一个这样运行的程序。我已经完成了机器人运动的基本代码,但是方向要求我使用带有显示方法的“Action”类 添加名为Action的新类,该类将公开以下数据段:| 1.)动作类型 2)方向 3.)距离 3.)显示() o Action类的Display方法应发出RobotDirection.X,其中X是方向的全名 或移动机器人(X),其中X是选定的距离。 o添加类型操作列表,以跟踪用户输入的方向和移动指令 o添加一个列表框,对于操作列表中的每个项目,调用Display()方法并将该信息添加

我必须设计一个这样运行的程序。我已经完成了机器人运动的基本代码,但是方向要求我使用带有显示方法的“Action”类

添加名为Action的新类,该类将公开以下数据段:|

1.)动作类型 2)方向 3.)距离 3.)显示()

o Action类的Display方法应发出RobotDirection.X,其中X是方向的全名

或移动机器人(X),其中X是选定的距离。 o添加类型操作列表,以跟踪用户输入的方向和移动指令

o添加一个列表框,对于操作列表中的每个项目,调用Display()方法并将该信息添加到 列表框

截至目前,我有一个enums类,如下所示:

public enum ActionType
{
    Movement,
    Direction
}
public enum RobotDirection
{
    North,
    South,
    East,
    West
}
在我的行动课上:

 public String Display(Action x)
    {
        String robotAction = null;

        if(x.ActionType == ActionType.Direction)
        {
            if(x.Direction == RobotDirection.North)
            {
                robotAction = "RobotDirection.North";
            }
            else if(x.Direction == RobotDirection.East)
            {
                robotAction = "RobotDirection.East";
            }
            else if(x.Direction == RobotDirection.South)
            {
                robotAction = "RobotDirection.South";
            }
            else if(x.Direction == RobotDirection.West)
            {
                robotAction = "RobotDirection.West";
            }

        }

        else if (x.ActionType == ActionType.Movement)
        {
            robotAction = "MoveRobot(" + Distance + ")";
        }

        return robotAction;

    }
}   
如何调用Display方法来填充列表框


谢谢大家!

您应该对字符串调用此方法:

string specificAction = Display(/*any action*/)
然后将字符串添加到列表框:

yourListBox.Items.Add(specificAction)

希望有帮助

您的
Action
类的问题在于您需要一个构造函数和字段,并且不需要将
Action
作为参数传递给
Display
方法

首先将一些字段添加到
操作
类:

public class Action
{
    private ActionType type;
    private RobotDirection direction;
    private int distance;
接下来,在类中添加构造函数:

    public Action(ActionType type, RobotDirection direction, int distance)
    { 
        this.type = type;
        this.direction = direction;
        this.distance = distance;
    }
您可以调用此构造函数来创建一个新的
Action
对象,如下所示:
var Action=newaction(ActionType.Direction,RobotDirection.North,10)

您还可以在
Display
方法中使用
this.type
this.direction
,并且
Display
方法也不需要任何参数(即
Display()
而不是
Display(Action x)

最后一件你可能感兴趣的事情:和。您可以创建新类,例如
MovementAction
RotateAction
,并使它们实现
iaAction
,该接口将成为仅包含
Display()
方法的接口


MovementAction
类将只包含
ActionType
int-distance
的字段。
RotateAction
类将只包含
ActionType
RobotDirection
的字段。它们都将以不同的方式实现
Display()
方法。

对不起,我在你的帖子中没有看到问题/问题是什么。我的问题是我不知道如何正确使用Display方法填充列表框。虽然我有Display方法,但没有任何东西将其连接到Listbox,而且我不确定x。在本例中代表。@user7200174您看过的文档了吗?是的,我看过,通常我只会硬编码按钮以向列表框中添加一个项目,但必须结合使用显示方法和枚举来填充列表框。@user7200174好的。如果我理解正确,方向和移动说明由用户输入。当用户添加指令时,您需要创建一个新的
Action
对象,其中包含指令的详细信息。此
操作
对象需要添加到
列表
。输入所有指令后,您需要从
列表中的每个
操作调用
Display()
,并将其添加到您的
列表框中(例如,像
foreach(myActionList中的var a){yourListBox.Items.add(a.Display());}
。问题说明如下:“添加一个类型动作列表,以跟踪用户输入的方向和移动指令”。您的答案不包括这一点,但我同意,如果此
列表除跟踪输入动作外,不用于任何其他用途,则您的解决方案是正确的,因为在这种情况下,此列表毫无用处。