2016-12-15 10 views
2

Ich bin ein neuer Programmierer und mein neues Projekt ist es, ein Tagebuch zu schreiben.Arrays in einer Liste

Ich möchte das Journal selbst eine Liste sein, aber jeder neue Beitrag ein neues Array, das 2 Elemente enthalten kann (ein Titel und der Beitrag). Ich sollte hinzufügen, dass dies für ein Schulprojekt ist, also eine Beule in die richtige Richtung ist alles was ich brauche.

Ich hoffe, ich habe mich klar gemacht, was ich versuche zu tun, und danke im voraus!

+2

Anstelle eines Arrays würde ich vorschlagen, dass Sie eine Klasse mit den Eigenschaften 'Title' und' Post' erstellen. – juharr

+0

Ich bin nicht sicher, ob ich das tun darf, da sie nach einem Array gefragt haben. Aber ist das etwas, das im Allgemeinen besser ist? und warum? :) – LePelican

+6

Verwenden Array als eine Struktur, um verschiedene Arten von Daten zu halten ist ein extrem schlechter Ansatz. Die Schule sollte das nicht für das Übergangslernen fördern. – user3437460

Antwort

5

nach Ihren Kommentar, was Sie suchen, ist wahrscheinlich:

List<string[]> theList = new List<string[]>(); 

jedoch juharr richtig ist, dass wenn Sie nicht haben hat ein Array zu verwenden - Sie eine Klasse erstellen sollte wie er schlug vor.

+0

Okay, danke und ich werde definitiv auch in die Klassenversion schauen! :) – LePelican

2

Ich weiß, dass Sie nach einer Liste von String-Array gefragt haben. Aber das ist eine andere Alternative.

Ich bin mir nicht sicher, ob Ihre Schule Sie gebeten hat, ein String-Array zu verwenden, um Daten unterschiedlicher Art zu speichern. Wie zum Beispiel:

+-------+-------+ 
| title | post | postArray 
+-------+-------+ 

Aber ich sehe es als etwas, das sollte entmutigt werden. Ich würde eine Klasse verwenden, um die Daten zu gruppieren, und dann eine relevante Datenstruktur verwenden, um sie zu halten.

+0

Danke, alle Kommentare scheinen zuzustimmen, dass der Klassenweg der Weg ist, also danke auch für diesen Kommentar :) – LePelican

0

Eine andere Möglichkeit, dies zu tun, könnte sein, Structs zu verwenden.

Hier ist ein Beispiel:

internal class Program { 

    struct Page { //Like an inline class, usually used if you need an object that won't be reused often 
     /// <summary> 
     /// Name of Page 
     /// </summary> 
     public String Name { get; set; } 
     /// <summary> 
     /// Text Page contains 
     /// </summary> 
     public String Text { get; set; } 
     /// <summary> 
     /// Date the Page was wrote 
     /// </summary> 
     public DateTime Date { get; set; } 

     /// <summary> 
     /// Creates a new Page 
     /// </summary> 
     /// <param name="n">Name of the Page</param> 
     /// <param name="t">Text contained in the page</param> 
     /// <param name="d">Date of the Page</param> 
     public Page(String n, String t, DateTime d) { 
      this.Name = n; //Name 
      this.Text = t; //Text 
      this.Date = d; //Date  Use DateTime.Now to get the current time 
     } 
    } 

    public static void Main(string[] args) { 

     List<Page> Book = new List<Page>(); 

     Book.Add(new Page("Page Name", "I'm Some Text!", DateTime.Now)); //An example entry 
     Book.Add(new Page("Page2", "And some more!", DateTime.Today)); 
     Book.Add(new Page("Page 3", "And a bit more", DateTime.MaxValue)); 

     foreach (var p in Book) { //for each variable in book -> var can be used if you don't know the object's type 
      string str = string.Format("{0} | {1} : {2}", p.Date, p.Name, p.Text); //returns a string where the numbers replaced by the parameters 
      Console.WriteLine(str); //writes the string to the console 
     } 

     Console.Read(); //Stops console from automatically closing 

     /*RESULT 
     * 
     * 15/12/2016 19:42:46 | Page Name : I'm Some Text! 
     * 15/12/2016 00:00:00 | Page2 : And some more! 
     * 31/12/9999 23:59:59 | Page 3 : And a bit more 
     * 
     */ 
    } 


} 

Sie die

public String Text { get; set; } 

mit

public List<String> Text { get; set; } 

ersetzen könnte, aber wenn Sie das tun würden, würden Sie durch die ganze laufen müssen Zeilen, um den vollständigen Text auf der Seite zu erhalten.

Sie müssten beim Erstellen der Seite auch eine neue Liste oder eine vorhandene Liste verwenden, anstatt wie hier eine Zeichenfolge zu übergeben.

+1

Veränderliche Strukturen (Strukturen mit öffentlichen 'set' Accessoren) sind die Ursache von [alptraumhaften Problemen] (http://stackoverflow.com/questions/441309/) Wie Werte, die sich nicht ändern, nachdem Sie sie festgelegt haben. Erstelle sie nur, wenn du sie wirklich brauchst. Patrik braucht sie nicht. –

+0

@DourHighArch wusste das nie, hmm. Ich verwende sie normalerweise nur, wenn ich ein Objekt schnell brauche, das ist keine Klasse wert, weshalb ich es als eine andere Alternative in diesem Beispiel vorgeschlagen habe – artman41

Verwandte Themen