2011-03-17 109 views
0

我是C#編程新手。我想這可能是一個非常簡單的解決方案,我不知道。將項添加到類中的數組

假設我有一個類文件

using System; 
using System.Collections.Generic; 

namespace sharepointproject1 
{ 
    public partial class School 
    { 
     public students[] students { get; set; } 
    } 

    public partial class student 
    { 
     public marks[] marks; 
     public extraactivites[] extraactivities; 
    } 
    public partial class marks 
    { 
     public int m1 { get; set; } 
     public int m2 { get; set; } 
    } 
    public partial class extraactivities 
    { 
     public decimal m5; 
     public decimal m6; 

    } 
} 

現在aspx.cs文件如何添加標記到數組聲明?

namespace sharepointproject1 
{ 
    public partial class testing : usercontrol 
    { 
     School school = new school(); 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      school.students[0].marks[0].mark1 = 45; 
     } 
    } 
} 

我需要在運行時動態添加項目。我怎麼做?我是否需要將數組更改爲類文件中的列表數組?希望我的問題能夠理解一些。後來我需要將這些標記綁定到gridview。

請幫忙!

+1

我建議['System.Collections.Generic.List '](http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx)。或者建立自己的['System.Collections.CollectionBase'](http://msdn.microsoft.com/en-us/library/system.collections.collectionbase.aspx)對象。 – 2011-03-17 17:30:17

回答

6

數組有固定的大小 - 使用更靈活的集合,如List<T>,它會隨着您的需要而增長。

Eric Lippert有一篇關於爲什麼arrays should be considered somewhat harmful的好博客文章。

此外:

  • 你應該看看.NET naming conventions
  • 只使用部分類,當你真的需要,我懷疑你不要在這裏
  • 不要暴露公共領域;使用屬性來代替。但是,不要只將所有內容暴露爲屬性:考慮更多封裝。你不一定希望調用者能夠替換整個集合,但只是(比如說)添加或刪除學生,或者通過索引來訪問它們。
  • 考慮做一些你的類不可變的(最明顯的標誌和ExtraActivities)的
+0

+1,強制性的「Jon Skeet郵寄票」。 (我們有沒有在這個地方有一個greasemonkey腳本?)另外,有趣的文章數組,感謝張貼。 – 2011-03-17 17:34:38

+0

應該認爲ArrayList與數組一樣有害嗎? – IAbstract 2011-03-17 17:52:05

+0

@IAbstract:我認爲ArrayList在現代.NET代碼中已經過時而不是有害的......數組在現代代碼中仍然佔有一席之地,但應謹慎使用。 – 2011-03-17 17:54:35

0

您需要更改數組的東西,可以動態地成長List這樣<>。將AddMark(標記標記)等方法添加到學生類並在類內執行Add操作可能是更好的選擇。

1

我的建議是忘記陣列和使用ListList<T>這是通用列表。 不僅是因爲解決了你的問題的動態部分,而且還有更好的性能避免盒子和拆箱。

0

除非你因爲某些原因在.NET 1.0中陷入困境,我強烈建議查看Collection類以及.NET中的泛型。這些將允許你用List替換array []聲明,其中T是一個.NET類型。 e.g

public class Student 
{ 
    public List<Mark> Marks{get;set;} 
} 

public class Mark 
{ 
    public int SomePropertyA { get; set; } 
    public int SomePropertyB { get; set; } 
} 
+0

謝謝您的所有建議。絕對列表比數組更加動態,我仍然需要繼續按照我們的項目使用Array。我真的希望有人幫助我,我怎麼去添加項目到我在我的問題中宣佈的類。 – Janet 2011-03-17 18:11:36