我在类中创建了一个名为'direction'的枚举,以便轻松实现“蛇”游戏。但我不知道如何将此类中的值传递给主窗体...
我尝试了什么?
1)我尝试在类和表单中创建相同的枚举,但是存在转换问题(Argument1:无法转换为'Project.Form1.direction'到'Class.direction'
2)我尝试了参数传递,但我失败了。
然后我尝试了一些愚蠢的事情,我在这里就提到了。
我还附上一份声明,也许它会帮助你。
let rect = this.renderer.createElement('rect', 'svg')
this.renderer.appendChild(svg, rect)
答案 0 :(得分:1)
您只需要定义枚举一次。如果你在一个名为snake的公共类中声明你的枚举,就像这样:
public class Snake
{
public enum direction { stop, up, down, left, right };
//rest of class
}
您可以使用类型Snake.direction
修改强>
或者您可以在任何课程之外声明您的枚举。
public class Snake
{
//class
}
public enum direction { stop, up, down, left, right };
然后您可以使用direction
来访问枚举
答案 1 :(得分:0)
通常最好定义一个enum directly within a namespace,以便命名空间中的所有类都可以同样方便地访问它。但是,枚举也可以嵌套在类或结构中。这里是第一种方法的简单例子,HTH
Direction.cs定义
enum Direction
namespace Snake.Game.Enums
{
public enum Direction
{
Up,
Down,
Left,
Right
};
}
文件
类型属性的类SnakeGame.cs
定义具有Direction
using Snake.Game.Enums;
namespace Snake.Game.Classes
{
public class SnakeGame
{
public Direction Direction { get; set; }
}
}
SnakeGameForm.cs
定义表单,在构造函数中它成为SnakeGame
类型的实例,因此表单每次都知道Direction
是什么。
using System.Windows.Forms;
using Snake.Game.Classes;
namespace Snake.Game.Forms
{
public partial class SnakeGameForm : Form
{
private readonly SnakeGame _game;
public SnakeGameForm(SnakeGame game)
{
InitializeComponent();
_game = game;
}
private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show($"Direction of snake is '{ _game.Direction}'.");
}
}
}