2013-03-13 5 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 Forms приложения, используя что-то вроде щелчка кнопки со следующим:

MessageBox.Show(Vehicle[0].name) 

я что-то не хватает. Как я могу сделать список Vehicle public?

+0

1. «Список ' 2. 'carList [0] .name' 3. Пробовали ли вы Google? – zerkms

+0

[Я думаю, что ваш ответ здесь.] [1] [1]: http://stackoverflow.com/questions/9468709/using-singleton-in-c-sharp –

+0

Вы можете посмотреть в 'static' типов, но с одноплодным рисунком делает именно это, поэтому в любом случае. –

ответ

7

Учитывая то, что вы показали, одноэлементный шаблон кажется вам немного для вас прямо сейчас. Если вы не согласны, просто дайте нам знать, и мы будем указывать вам в правильном направлении, потому что теперь, просто попробовать что-то вроде этого:

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

И доступ будет так:

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

Угадайте, я не должен указывать код здесь. У меня есть класс «Автомобиль» и класс «AccessStuff», как вы предложили. public static Список CarList = новый Список (); Где я могу присвоить значения списку? – user2163343

+0

Ах, понял. – user2163343

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

Многие программисты считают, используя статический как вредный, как правило, это признак плохой дизайн. Вам действительно нужно иметь singleton для доступа к вашим классам и объектам?

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>(); 

Статические классы и члены класса используются для создания данных и функции, которые могут быть доступны без создания экземпляра класса. Статические члены класса могут использоваться для разделения данных и поведения, не зависящих от любого идентификатора объекта: данные и функции не изменяются независимо от того, что происходит с объектом. Статические классы могут использоваться, когда нет данных или поведения в классе, которые зависят от идентичности объекта.

Смежные вопросы