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)

何かが足りない。リスト車両を公開するにはどうすればよいですか?

4

5 に答える 5

7

あなたが示したことを考えると、シングルトンパターンは今のところあなたにとって少し多すぎるようです。同意しない場合は、お知らせください。正しい方向に進みます。今のところ、次のようなことを試してください。

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

そして、次のようにアクセスします。

private void SomeFunction()
{
  MessageBox.Show(AcessStuff.CarList[0].Name)
}
于 2013-03-13T01:15:09.123 に答える
1

リストを にしたい場合readonlyは、getter.

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

    public static List<Vehicle> Instance { get { return _vehicles; } }
}
于 2013-03-13T01:18:40.673 に答える
0

すべての静的オブジェクトを使用する

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

静的クラスとクラス メンバーは、クラスのインスタンスを作成せずにアクセスできるデータと関数を作成するために使用されます。静的クラス メンバーを使用して、オブジェクト ID に依存しないデータと動作を分離できます。オブジェクトに何が起こっても、データと関数は変更されません。静的クラスは、クラスにオブジェクト ID に依存するデータまたは動作がない場合に使用できます。

于 2013-03-13T01:24:15.950 に答える
0

実際、シングルトンについてはこのリンクを参照します

ここに1つのバージョンがあります:

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;
         }
     }
 }

多くのプログラマーは、static を有害なものとして使用すると考えています。通常、これは設計が悪いことを示しています。クラスやオブジェクトにアクセスするためにシングルトンが本当に必要ですか?

于 2013-03-13T01:19:57.410 に答える
0

これを行うには 2 つの方法があります。

1 つは、プロジェクト内にファイルを作成して、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
}

carList2 つは、ウィンドウ クラスで変数を作成することです。例えば:

public class MyWindow : Window
{
    #region Properties

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

    #endregion

    /* window stuff */
}
于 2013-03-13T01:21:02.487 に答える