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

许多程序员认为使用静态是有害的,通常这是一个糟糕设计的标志。你真的需要一个单例来访问你的类和对象吗?

于 2013-03-13T01:19:57.410 回答
0

有两种方法可以做到这一点。

一种是在您的项目中创建一个Data.cs文件,您可以在其中放置所有全局应用程序数据。例如:

数据.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 */
}
于 2013-03-13T01:21:02.487 回答
0

使用静态对象仅此而已

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

静态类和类成员用于创建无需创建类实例即可访问的数据和函数。静态类成员可用于分隔独立于任何对象身份的数据和行为:无论对象发生什么,数据和函数都不会改变。当类中没有依赖于对象标识的数据或行为时,可以使用静态类。

于 2013-03-13T01:24:15.950 回答