当前位置:编程学习 > C#/ASP.NET >>

List<Teacher> 修改Teacher对象里面的string[]

List<Teacher> arrTeacher = new List<Teacher>();
Teacher 有一个属性是 是否有课  用一个数组表示
但是修改了 其中一个Teacher对象的 数组 属性 之后,
其他的 Teacher 的是否有课属性 也变了

就好像是 这些Teacher对象 公用 一个 数组似的

如何才能修改其中的一个Teacher对象的是否有课的属性,别的Teacher不跟着变? --------------------编程问答-------------------- 看看属性 是否被声明成静态static或依赖某个特定的数据源了 --------------------编程问答-------------------- 測試了一下,沒有問題。你還是把源代碼貼出來,這樣才容易發現問題。 --------------------编程问答-------------------- 肯定是你都引用了同一个对象了
你在Teacher的构造函数中,初始化那个属性吧 --------------------编程问答-------------------- arrTeacher.Add(new Teacher() { 数组属性 = (string[])数组.Clone() }); --------------------编程问答-------------------- 每次添加teacher的时候都应该new一次。 --------------------编程问答--------------------  class Teacher
        {
            //姓名
            public string Name;
            //是否有课
            public string[] IsAvailable;       
        }

        public void test()
        {
            List<Teacher> arrTeacher = new List<Teacher>();
            //两个老师
            Teacher t1 = new Teacher();
            Teacher t2 = new Teacher();
            string[] tempAvailable = {"1","0", "1", "0", "1", "0" };
            string[] tempAvailable2 = { "0", "0", "0", "0", "0", "0" };
            t1.IsAvailable = tempAvailable;
            t1.Name = "张三";
            t2.IsAvailable = tempAvailable2;
            t2.Name = "李四";
            arrTeacher.Add(t1);
            arrTeacher.Add(t2);
            //修改张三是否有课属性
            foreach(var t in arrTeacher)
            {
                if (t.Name == "张三")
                { 
                    string[] newAvailable={ "1", "1", "1", "1", "1", "1" };
                    t.IsAvailable = newAvailable;
                }
            }            
        }

只会改一个教师的属性啊  不知道我理解的对不对
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,