我正在研究單例格式,它與我之前使用的東西非常相似。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'的實例?),但是如果有什麼我會期望靜態類比單例更快(可能是一些無關緊要或甚至不可估量的量)。充其量,這裏的問題太廣泛了,最壞的情況是沒有足夠的信息讓任何人回答你的具體情況。 –