C# 单例VS静态类,性能方面?

C# 单例VS静态类,性能方面?,c#,xamarin.forms,C#,Xamarin.forms,我经常遇到这样的两难境地:要么创建一个单例类,要么创建一个静态类来存储我的应用程序的运行时数据 比方说 public static class DataManager { public static int a = 0; public static int b = 0; public static int c = 0; } 这样我就可以调用DataManager.a了 及 在这个调用中,我必须调用DataManager.SharedInstance().a 两种方法都会

我经常遇到这样的两难境地:要么创建一个单例类,要么创建一个静态类来存储我的应用程序的运行时数据

比方说

public static class DataManager
{
    public static int a = 0;
    public static int b = 0;
    public static int c = 0;
}
这样我就可以调用DataManager.a了

在这个调用中,我必须调用DataManager.SharedInstance().a

两种方法都会奏效。但我想知道哪个对我的应用程序的内存和性能更有利。假设我的数据很大,并且包含许多其他集合


提前感谢。

显然,第一种方法更简单、更简短,既适用于阅读,也适用于性能和记忆方面


在第二段代码中,这两个额外的构造将导致一点开销。

尝试这两种方法并比较性能。我希望静态的速度更快,但您永远不能确定。您是否更改过存储在静态或singleton中的这些值?singleton类缺少的一点是,您必须有一个私有构造函数,否则可以在代码中的任何位置创建另一个实例!关于性能,我不确定是否会有任何区别,但就可用性而言,您可以继承一个单例类而不是静态类。我总是选择第二个选项(使用
Lazy
),以便能够在测试期间切换数据,除非(在生产条件下)测得数据非常慢。也适用于内存占用。你的问题太宽泛了,甚至没有足够的上下文让任何人正确回答。根据具体情况,两者都可能更快/使用更少的内存。唯一正确的答案是对两者进行测试,看看哪一个符合您的特定性能目标。没有任何具体的绩效目标?那么,你的担心是完全不成熟的,甚至不值得考虑。
    public class DataManager
    {

      private static DataManager _sharedInstance = new DataManager();

        static internal DataManager SharedInstance()
        {
            return _sharedInstance;
        }

        public int a = 0;
        public int b = 0;
        public int c = 0;
}