我正在使用粒子列表。在靜態類中使用C#中的全局對象
List<Particle> particles;
通常我把這個列表放在我的模擬類中。它計算粒子的位置,速度和其他屬性。
其他一些類需要用於輸出和後處理的粒子數據。
是確定以創建一個靜態類,
static class Particles
{
static List<Particles> plist;
}
從其他類訪問粒子數據?
我正在使用粒子列表。在靜態類中使用C#中的全局對象
List<Particle> particles;
通常我把這個列表放在我的模擬類中。它計算粒子的位置,速度和其他屬性。
其他一些類需要用於輸出和後處理的粒子數據。
是確定以創建一個靜態類,
static class Particles
{
static List<Particles> plist;
}
從其他類訪問粒子數據?
我會建議儘可能遠離靜態類/方法。它們傾向於導致代碼的高度耦合。雖然有些情況下使用它們的速度要快得多(希望保守)。
我不太清楚你的問題,但我至少會建議改變靜態類來暴露屬性而不是字段。
public static class Particles
{
public static List<Particles> PList { get; set; }
}
或
public static class Particles
{
private static List<Particles> _plist;
public static List<Particles> PList
{
get { return _plist; }
set { _plist = value; }
}
}
這樣你封裝列表中多一點。例如,您可以在getter或setter中檢查空值。
你在這裏至少有兩個選項:
創建每個顆粒上運行的類屬性IList<Particles>
。
在每個對粒子進行操作的類中,創建一個專用的IList<Particles>
字段和一個將此列表作爲參數的構造函數。
其中任何一個選項都會保留列表的封裝。
「他們往往會導致代碼高耦合」 是的,更糟糕的是,一旦你開始使用它們,它們就會變成滑坡。他們非常方便,直到突然他們不是那麼他們是一場噩夢。在開發我的DAL的早期版本中,我匆匆地使一些靜態的庫成爲靜態庫,一旦我切換到使用ORM解耦,這段代碼很痛苦且很長。我對自己做了這件事,並且學會了艱難的道路。 – joshlrogers 2010-08-01 00:02:47
@Josh阿門!他們太容易被濫用,過了一會兒,你正面臨上帝階級。我工作的公司有一個編碼標準來避免靜態方法。我們被他們的方便方式咬了太多次。 – 2010-08-01 00:45:05