Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.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# 如何使变量可用于XNA/monogame中的所有类?_C#_Xna_Monogame - Fatal编程技术网

C# 如何使变量可用于XNA/monogame中的所有类?

C# 如何使变量可用于XNA/monogame中的所有类?,c#,xna,monogame,C#,Xna,Monogame,我的XNA/Monogame塔防中有几个变量需要在类之间传递。不幸的是,它们中的许多是自动生成的,所以我不能仅在中引用它们。我可以使用全局变量吗?这同样是在Monogame(XNA)/C#中。只需创建一个静态类,在其中存储所有全局变量,并且可以从所有类访问它 public static class MyGlobals { public static int LevelNumber { get; set; } public static string CurrentScore {

我的XNA/Monogame塔防中有几个变量需要在类之间传递。不幸的是,它们中的许多是自动生成的,所以我不能仅在中引用它们。我可以使用全局变量吗?这同样是在Monogame(XNA)/C#中。只需创建一个静态类,在其中存储所有全局变量,并且可以从所有类访问它

public static class MyGlobals
{
    public static int LevelNumber { get; set; }
    public static string CurrentScore { get; set; }
    ...
}
并通过

public class AnotherClass
{
    public void SomeMethod()
    {
        MyGlobals.LevelNumber = ...
        string score = MyGlobals.CurrentScore;
    }
}

只需创建一个静态类,在其中存储所有全局变量,并且可以从所有类访问它

public static class MyGlobals
{
    public static int LevelNumber { get; set; }
    public static string CurrentScore { get; set; }
    ...
}
并通过

public class AnotherClass
{
    public void SomeMethod()
    {
        MyGlobals.LevelNumber = ...
        string score = MyGlobals.CurrentScore;
    }
}

这是问题的答案,但我对此感到非常矛盾,因为如果你不小心,它会导致一些非常坏的习惯。全局静态是迟早会回来咬你的东西之一。考虑如果要引入多线程、单元测试、可重用性或许多其他原因,会发生什么。如果你必须沿着这条路径走下去,至少要先阅读风险,并考虑如何在可能的情况下使用某种形式的依赖注入。是的,我同意。当您希望能够保存和加载游戏时,我更关心序列化。不过,我不会为可重用性和单元测试操心。他在做游戏。至于并发环境,我们必须始终注意。当然,创建一个单例。但归根结底还是这些问题。你也可以利用一些应用程序设置,但这基本上意味着将这些设置保存在一个文件中,这不是一个坏主意,直到你需要经常访问它们。我想静态类是最小的邪恶。如果你不能使用构造函数注入,下一个最好的方法就是属性注入。还有其他的事情要考虑。工厂模式,服务定位器。我们真的需要知道更多关于你的情况的细节。我的情况是,我只需要把几个变量传递给我的主类。我很好奇什么是属性注入(初学者程序员)?我想我将只使用一个静态类,因为我只需要传递几个变量。这是问题的答案,但我对此感到非常矛盾,因为如果你不小心,它会导致一些非常坏的习惯。全局静态是迟早会回来咬你的东西之一。考虑如果要引入多线程、单元测试、可重用性或许多其他原因,会发生什么。如果你必须沿着这条路径走下去,至少要先阅读风险,并考虑如何在可能的情况下使用某种形式的依赖注入。是的,我同意。当您希望能够保存和加载游戏时,我更关心序列化。不过,我不会为可重用性和单元测试操心。他在做游戏。至于并发环境,我们必须始终注意。当然,创建一个单例。但归根结底还是这些问题。你也可以利用一些应用程序设置,但这基本上意味着将这些设置保存在一个文件中,这不是一个坏主意,直到你需要经常访问它们。我想静态类是最小的邪恶。如果你不能使用构造函数注入,下一个最好的方法就是属性注入。还有其他的事情要考虑。工厂模式,服务定位器。我们真的需要知道更多关于你的情况的细节。我的情况是,我只需要把几个变量传递给我的主类。我很好奇什么是属性注入(初学者程序员)?我想我将只使用一个静态类,因为我只需要传递几个变量。