在类中向数组添加项

时间:2011-03-17 17:27:01

标签: c#

我是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;
        }
    }
}

我需要在运行时动态添加项目。我怎么做?我是否必须在类文件中将数组更改为list数组。希望我能从我的问题中找到一些意义。后来我需要将标记绑定到gridview。

请帮忙!

4 个答案:

答案 0 :(得分:6)

数组具有固定的大小 - 使用更灵活的集合,例如List<T>,它将根据您的需要增长。

Eric Lippert撰写了一篇关于arrays should be considered somewhat harmful

的好文章

此外:

  • 您应该查看.NET naming conventions
  • 只在你真正需要的时候使用部分课程,我怀疑你不在这里
  • 不要暴露公共领域;请改用属性。但是,不要只是将所有内容都作为属性公开:考虑更多的封装。您不一定希望调用者能够替换整个集合,而只是(比如说)添加或删除学生,或者通过索引访问它们。
  • 考虑让你的一些类不可变(最明显的是Marks和ExtraActivities)

答案 1 :(得分:1)

我的建议是忘记数组并使用ListList<T>这是通用列表。 不仅因为解决了问题的动态部分,而且还具有更好的性能,避免了盒子和拆箱。

答案 2 :(得分:0)

您需要将Array更改为可以像List&lt;&gt;一样动态增长的内容。将AddMark(标记标记)等方法添加到学生类并在类中执行添加操作可能是更好的选择。

答案 3 :(得分:0)

除非你因为某些原因而在.NET 1.0中遇到困难,否则我强烈建议你查看.NET中的Collection类和泛型。这些将允许您用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; }
}