我正在研究单例格式,它与我之前使用的东西非常相似。N静态字段与单个静态实例
我的问题是,这两种方法之间是否存在任何不同的内存和/或性能方面的差异,第二种方法是否更快,足以掩盖其用法更大的写入和读取?
下面是一个例子代码:
方法1
public static class TheSomething {
public static String Title;
public static String Description;
public static String HowIsIt;
public static int TimesSeenCount;
public static List<Long> PeopleWhoSawIt;
public static List<Session> PeopleSeeingIt;
// now some math mumbo jumbo just to increase the memsize of this:
public static double posX;
public static double posY
public static double posZ;
public static double velX;
public static double velY;
public static double velZ;
public static double accX;
public static double accY;
public static double accZ;
public static double rotX;
public static double rotY;
public static double rotZ;
public static double rotVelX;
public static double rotVelY;
public static double rotVelZ;
public static double rotAccX;
public static double rotAccY;
public static double rotAccZ;
public static List<Vertex> Geometry;
}
要用于:
++TheSomething.PeopleWhoSawIt;
方法2
public static class TheSomething {
private static TheSomething _instance;
public static Instance {
get {
if(_instance == null)
_instance = new TheSomething();
} private set {
_instance = value;
}
}
private TheSomething() {}
public String Title;
public String Description;
public String HowIsIt;
public int TimesSeenCount;
public List<Long> PeopleWhoSawIt;
public List<Session> PeopleSeeingIt;
// now some math mumbo jumbo just to increase the memsize of this:
public double posX;
public double posY
public double posZ;
public double velX;
public double velY;
public double velZ;
public double accX;
public double accY;
public double accZ;
public double rotX;
public double rotY;
public double rotZ;
public double rotVelX;
public double rotVelY;
public double rotVelZ;
public double rotAccX;
public double rotAccY;
public double rotAccZ;
public List<Vertex> Geometry;
}
要用于:
++TheSomething.Instance.PeopleWhoSawIt;
这是一个非常复杂的问题,我的答案是人们比我更聪明的话。请阅读SO冠军Jon Skeet的文章[在C#中实现Singleton模式](http://csharpindepth.com/articles/general/singleton.aspx)。 – CrnaStena
“是否更快”是一种只能由_you_回答的问题,方法是在实际情况下运行与您的实际场景类似的有效性能测试。你的例子没有什么意义(增加一个'List'的实例?),但是如果有什么我会期望静态类比单例更快(可能是一些无关紧要或甚至不可估量的量)。充其量,这里的问题太广泛了,最坏的情况是没有足够的信息让任何人回答你的具体情况。 –