2013-03-13 23 views
1

這裏的第一個問題,要溫和。我試圖徹底搜索這個。如何製作可公開訪問的類別列表?

我想要一個像下面這樣的對象列表,可以從任何地方訪問,我知道一個「單例」類。

public class Car 
{ 
    public string Name; 
    public string Color; 
    public int Value; 
} 


List<Vehicle> carList = new List<Vehicle>(); 

Car jeep = new Car(); 
jeep.Name = "Jeep"; 
jeep.Color = "Red"; 
jeep.Value = 20000; 

Vehicle.Add(jeep); 

,這樣我可以訪問並在Windows的任何地方進行修改窗體應用程序,使用類似按鈕點擊下列要求:

MessageBox.Show(Vehicle[0].name) 

我失去了一些東西。我如何讓列表車輛公開?

+0

1.'列表'2.'carList [0] .name' 3.你有沒有試過谷歌? – zerkms 2013-03-13 01:11:49

+0

[我認爲你的答案在這裏。] [1] [1]:http://stackoverflow.com/questions/9468709/using-singleton-in-c-sharp – 2013-03-13 01:13:20

+0

你可能想看看'static'類型,但單件模式這樣做,無論如何。 – 2013-03-13 01:17:40

回答

7

鑑於你已經顯示,單身模式現在似乎有點多。如果您不同意,只是讓我們知道,我們會爲你在正確的方向,現在,只是嘗試這樣的事:

public class AcessStuff 
{ 
    public static List<Vehicle> CarList = new List<Vehicle>(); 
} 

而且你會獲得這樣的:

private void SomeFunction() 
{ 
    MessageBox.Show(AcessStuff.CarList[0].Name) 
} 
+0

猜猜我不應該在這裏鏈接代碼。我有一個「Car」類和「AccessStuff」類,就像你所建議的那樣。 public static List CarList = new List (); 我可以在哪裏給列表賦值? – user2163343 2013-03-13 01:49:06

+0

啊,算了一下。 – user2163343 2013-03-13 02:20:17

1

如果你希望你的名單是readonly那麼你只需要提供一個getter

public class Vehicles 
{ 
    private static readonly List<Vehicle> _vehicles = new List<Vehicle>(); 

    public static List<Vehicle> Instance { get { return _vehicles; } } 
} 
0

其實,我要提到這link單例

這裏是一個版本:

public sealed class Singleton 
{ 
    private static readonly Singleton instance = new Singleton(); 

    // Explicit static constructor to tell C# compiler 
    // not to mark type as beforefieldinit 
    static Singleton() 
    { 
    } 

    private Singleton() 
    { 
    } 

    public static Singleton Instance 
    { 
     get 
     { 
      return instance; 
     } 
    } 
} 

很多程序員考慮使用靜態有害,它通常是一個標誌糟糕的設計。你真的需要有一個單例來訪問你的類和對象嗎?

0

有兩種方法可以完成此操作。

一個是在您的項目中創建一個Data.cs文件,您可以放置​​所有全局應用程序數據。例如:

Data.cs

public static class ApplicationData 
{ 
    #region Properties 

    public static List<Vehicle> CarList 
    { 
     get 
     { 
      return ApplicationData._carList; 
     } 
    } 
    private static List<Vehicle> _carList = new List<Vehicle>(); 

    #endregion 
} 

二是建立在你的窗口類的變量carList。例如:

public class MyWindow : Window 
{ 
    #region Properties 

    public List<Vehicle> CarList 
    { 
     get 
     { 
      return this._carList; 
     } 
    } 
    private List<Vehicle> _carList = new List<Vehicle>(); 

    #endregion 

    /* window stuff */ 
} 
0

使用靜態對象就是所有

public static List<string> vehicles =new List<string>(); 

靜態類和類成員被用於創建不需要創建類的實例來訪問數據和功能。靜態類成員可用於分離獨立於任何對象標識的數據和行爲:不管對象發生什麼,數據和函數都不會更改。當類中沒有依賴於對象標識的數據或行爲時,可以使用靜態類。

相關問題