引用和修改Game1的不良做法?

Cep*_*eph 2 c# xna

我需要从不同的类中更改多个Game1变量.我一直这样做:

    public class Game1 : Microsoft.Xna.Framework.Game
    {
        public int test1;
        public int test2;
    }


    public class Player
    {
        public Player(Game1 game)
        {
            game.test1 = 5;
            game.test2 = 10;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是不好的做法,如果是这样,有另一种方法吗?

Ree*_*sey 8

这是不好的做法,如果是这样,有另一种方法吗?

是的,不是.通常适合从一种类型修改另一种类型的状态.

话虽这么说,使用两个公共领域来做这件事我认为是不好的做法.至少应该将它们切换到属性.如果"test1"和"test2"是相关值,并且始终一起更改,则提供单个公共方法将适合设置这些值.

如图所示,使用公共字段的缺点是您无法验证值.任何人(包括Player)都可以将您的字段设置为不适当的值.如果您要共享代码,也会出现版本问题(例如,更改为属性是API更改).

您希望其他类更改的任何状态(变量)应始终以您的类可以控制的方式公开.属性或方法允许您执行此操作.即使现在不需要这样做,设计未来也是一种更好的做法.