2016-12-15 104 views
2

我是一名新程序員,我的新項目是製作一本雜誌。陣列內的陣列

我希望日誌本身成爲一個列表,但每個新的帖子都是一個可以包含2個項目(標題和帖子)的新數組。 我應該補充說,這是一個學校項目,所以我需要的是正確方向的顛簸。

我希望自己清楚自己想做什麼,並提前致謝!

+2

而不是一個數組我建議你創建一個具有'Title'和'Post'屬性的類。 – juharr

+0

林不知道我是否被允許這樣做,因爲他們要求一個數組。但是,那是通常更好的做法嗎?爲什麼? :) – LePelican

+6

使用數組作爲一個結構來保存不同類型的數據是一個非常糟糕的方法。學校甚至不應該鼓勵這種轉換學習。 – user3437460

回答

5

根據您的意見,您要查找的內容大概是:

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

然而,juharr是正確的,如果你沒有使用數組 - 你應該創建像一​​個類他建議。

+0

好吧,謝謝,我將定義一下,看看類的版本! :) – LePelican

2

我知道你一直在要求一個字符串數組的列表。但這是另一種選擇。

List<Post> journal = new List<Post>(); 

class Post{ 
    private String title; 
    private String content; 
} 

我不確定您的學校是否要求您使用字符串數組來保存不同性質的數據。如:

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

但我認爲這是應該泄氣的東西。我會用一個類對數據進行分組,然後使用相關的數據結構來保存它們。

+0

謝謝,所有的評論似乎都認爲,課程的方式是走的,所以感謝這個評論以及:) – LePelican

0

另一種解決方法是使用Structs。

下面是一個例子:

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 
     * 
     */ 
    } 


} 

你可以更換

public String Text { get; set; } 

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

,但如果你這樣做,你就需要通過遍歷所有的用於獲取頁面上的全文。

當您創建頁面時,您還需要使用新列表或現有列表,而不是像我們在此處那樣傳遞字符串。

+1

可變的結構(公共'集'存取結構)是[夢魘問題]的原因, (http://stackoverflow.com/questions/441309/)像值設置後不會更改。只有在你真的需要它們的時候才創造它們。 Patrik不需要它們。 –

+0

@DourHighArch從來不知道,嗯。我通常只使用它們,如果我需要一個快速的對象,這是不值得一類的,這就是爲什麼我在這個例子中建議它作爲另一種選擇 – artman41