C# 如何更改另一个类中主类的枚举值

C# 如何更改另一个类中主类的枚举值,c#,enums,xna,C#,Enums,Xna,我试图为我的游戏创建一个开始菜单,我的代码使用Enum来监控屏幕状态 现在我想更改在我的后台类的主类中声明的screenstate Screen screen = new Screen(); 在Game1类中声明 Background(ref screen); 这在后台类的更新方法中 KeyboardState keystate = Keyboard.GetState(); switch (screen) { case Screen.Start: if (isPres

我试图为我的游戏创建一个开始菜单,我的代码使用Enum来监控屏幕状态

现在我想更改在我的后台类的主类中声明的screenstate

Screen screen = new Screen();
在Game1类中声明

Background(ref screen);
这在后台类的更新方法中

KeyboardState keystate = Keyboard.GetState();
switch (screen)
{
    case Screen.Start:
        if (isPressed && keystate.IsKeyUp(Keys.Up) && keystate.IsKeyUp(Keys.Down) && keystate.IsKeyUp(Keys.Enter))
        {
            isPressed = false;
        }
        if (keystate.IsKeyDown(Keys.Down) && isPressed != true)
        {
            if (menuState == MenuState.Options)
                menuState = MenuState.Credits;
            if (menuState == MenuState.Play)
                menuState = MenuState.Options;
            isPressed = true;
        }

        if (keystate.IsKeyDown(Keys.Up) && isPressed != true)
        {
            if (menuState == MenuState.Options)
                menuState = MenuState.Play;
            if (menuState == MenuState.Credits)
                menuState = MenuState.Options;
            isPressed = true;
        }

        switch (menuState)
        {
            case MenuState.Play:
                arrowRect.X = 450;
                arrowRect.Y = 220;
            if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
                screen = Screen.Play;
                break;
            case MenuState.Options:
                arrowRect.X = 419;
                arrowRect.Y = 340;
                if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
                    screen = Screen.Options;
                    break;
            case MenuState.Credits:
                arrowRect.X = 425;
                arrowRect.Y = 460;
                if (keystate.IsKeyDown(Keys.Enter) && isPressed != true)
                    screen = Screen.Credits;
                break;
            }
            break;
       }
 }

出于某种原因,当我播放这个并按下enter按钮时,后台类的屏幕发生了更改,但主类的屏幕没有更改。我如何更改它?

可能您在其他地方做错了什么,此代码似乎是正确的

您可以在
后台
类中添加
GetState()
方法绕过此问题,并在
Game1
更新
方法中调用它,而无需使用
ref screen

编辑

如果
screen
enum
我想你不能像传递引用一样传递它,因为

枚举是引用类型,但任何特定的枚举类型都是值 类型


我喜欢这个方法,但是没有办法解决吗?你是说你的解决方案?我不明白什么是
screen
,你调用一个构造函数,然后你像
enum
一样分配它。真的。。。我怎么没看到,哈哈,我是个新手,我只是习惯了初始化类型。如果它是一个值类型,那么解决方法是什么?我如何引用它?如果它是一个值,你肯定不能使用它作为引用,所以我认为你必须使用类似于我的解决方案的东西。它看起来像public Screen GetScreen(){return Screen}