2013-03-13 1 views
1

여기에 대한 첫 번째 질문은 친절하십시오. 나는 이것을 내 자신으로 철저히 조사하려고 노력했다.수업 목록을 공개적으로 액세스 가능하게 만드는 방법은 무엇입니까?

다음과 같은 개체 목록을 어디서든 액세스 할 수있게하려는 경우 "이해할 수있는"단일 클래스입니다. 내가 액세스하고 Windows에서 어디를 수정할 수

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

이러한는 다음과 버튼 클릭 같은 것을 사용하여 Forms 응용 프로그램 : 뭔가를 누락

MessageBox.Show(Vehicle[0].name) 

. 목록 차량을 공개하려면 어떻게합니까?

+0

1.'목록 '2. carList [0] .name' 3. Google에 시도 했습니까? – zerkms

+0

[귀하의 답변은 여기에 있습니다.] [1] [1] : http://stackoverflow.com/questions/9468709/using-singleton-in-c-sharp 당신은 static' 유형하지만, 싱글 톤 패턴 '을 조사 할 수 있습니다 –

+0

정확히 어느 쪽이라도 그렇게한다. –

답변

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

많은 프로그래머가 유해과 정적을 사용하는 것이 좋습니다 보통은의 표시이다 나쁜 디자인. 클래스와 객체에 액세스하려면 싱글 톤이 정말로 필요합니까?

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

정적 클래스 이잖아 반원이 클래스의 인스턴스를 생성하지 않고 액세스 할 수있는 데이터 및 기능을 만드는 데 사용된다. 정적 클래스 멤버를 사용하여 개체 ID와 독립적 인 데이터와 동작을 구분할 수 있습니다. 데이터 및 함수는 개체에 어떤 일이 발생하든 관계없이 변경되지 않습니다. 정적 ID는 개체 ID에 종속되는 클래스에 데이터 나 동작이없는 경우에 사용할 수 있습니다.

관련 문제