我需要从不同的类中更改多个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)
这是不好的做法,如果是这样,有另一种方法吗?
这是不好的做法,如果是这样,有另一种方法吗?
是的,不是.通常适合从一种类型修改另一种类型的状态.
话虽这么说,使用两个公共领域来做这件事我认为是不好的做法.至少应该将它们切换到属性.如果"test1"和"test2"是相关值,并且始终一起更改,则提供单个公共方法将适合设置这些值.
如图所示,使用公共字段的缺点是您无法验证值.任何人(包括Player)都可以将您的字段设置为不适当的值.如果您要共享代码,也会出现版本问题(例如,更改为属性是API更改).
您希望其他类更改的任何状态(变量)应始终以您的类可以控制的方式公开.属性或方法允许您执行此操作.即使现在不需要这样做,设计未来也是一种更好的做法.