2016-04-07 7 views
-3

Schedule.csglobale Array wird nicht in lesen #

public static class SchArray 
{ 

    public static string[] clientName = new string[20]; 
    public static DateTime[] startDate = new DateTime[20]; 
    public static DateTime[] endDate = new DateTime[20]; 
    public static string[] allocatedDriver = new string[20]; 
    public static string[] depot = new string[20]; 
    public static int count = 3; 
} 

public void schedule() 
{ 

    SchArray.clientName[0] = "eric cartman"; 
    SchArray.clientName[1] = "peter griffin"; 
    SchArray.clientName[2] = "homer simpson"; 
    SchArray.startDate[0] = Convert.ToDateTime("2016,3,2"); 
    SchArray.startDate[1] = Convert.ToDateTime("2016,3,4"); 
    SchArray.startDate[2] = Convert.ToDateTime("2016,3,5"); 
    SchArray.endDate[0] = Convert.ToDateTime("2016,3,3"); 
    SchArray.endDate[1] = Convert.ToDateTime("2016,3,5"); 
    SchArray.endDate[2] = Convert.ToDateTime("2016,3,6"); 
    SchArray.allocatedDriver[0] = "owen"; 
    SchArray.allocatedDriver[1] = "daniel"; 
    SchArray.allocatedDriver[2] = "owen"; 
    SchArray.depot[0] = "depot1"; 
    SchArray.depot[1] = "depot2"; 
    SchArray.depot[2] = "depot3"; 
} 

Work_Schedule.cs

public void schedule() 
{ 

    Console.Clear(); 
    Console.WriteLine(" Create Work Schedule "); 

    Console.WriteLine(Schedule.SchArray.clientName[0]); 
    Console.ReadKey(); 
} 

Console.WriteLine(Schedule.SchArray.clientName[0]); 

^^^^^ diese Zeilenfenster c trösten sollte den Namen des ericcartman anzuzeigen, i habe es debuggt und es heißt, dass es keine Objekte im Array gibt, sie sind alle null.

+1

Warum nicht ein Array einer Klasse mit clientName/startDate/endDate usw. Eigenschaften –

+1

1. Verwenden Sie OO! 2. Hast du 'Schedule.schedule()' aufgerufen? – Bas

+1

Sie zeigen den relevanten Code nicht an. Wo nennst du 'schedule()'? –

Antwort

0

Sie benötigen ein Objekt von Schedule da die Array-Elementen innerhalb des Konstruktors initialisiert ware zu erstellen:

Schedule scheduleObject = new Schedule(); 
    Console.WriteLine(SchArray.clientName[0]); 

Für dieses spezielle Szenario würde Ich mag einen anderen Ansatz vorschlagen, der einen statische Liste/Array zu schaffen Objekte. Lassen Sie mich die Klasse ändern, wie wie folgt aus:

public class SchArray 
    { 
     public string clientName; 
     public DateTime startDate; 
     public DateTime endDate; 
     public string allocatedDriver; 
     public string depot; 
     public int count = 3; 
    } 

Und ich habe eine List<SchArray> als statisch definiert;

public static List<SchArray> StaticSchArray = new List<SchArray>(); 

Dann kann ich die Liste füllen, wie wie folgt aus:

StaticSchArray.Add(new SchArray() {clientName="eric cartman", 
           startDate=Convert.ToDateTime("2016,3,2"), 
           endDate= Convert.ToDateTime("2016,3,2"), 
           depot="depot1",allocatedDriver ="owen" }); 

Ähnlich andere Elemente können auch zu dem Array hinzugefügt werden. Dies ist eine bessere Option für dieses Szenario.

0

Sie sollten Ihre Funktion schedule() aufrufen, bevor Sie versuchen, Daten von Ihren Eigenschaften abzurufen.

+0

Auch die Funktion muss zu einer Klasse hinzugefügt werden. –

+0

'Schedule' ist ein Konstruktor keine Methode –

+1

es beginnt wird öffentlich ungültig, so dass es eine Methode ist –