none
动态 添加和删除 自定义数组 的成员 RRS feed

  • 问题

  •         public struct rbs_struct
            {
                public string MainTab;
                public string ChildTab;
                public string SelectedText;
            }
            public rbs_struct[] rbs;
            void initialization_rbs()
            {
                rbs = new rbs_struct [10];
                for (int x = 0; x < 10; x++)
                {
                    rbs[x].MainTab = x.ToString();
                }
            }

    已经初始了rbs,假定为10个成员,现在如何动态添加和删除rbs的成员,也就是随时有可能要增加rbs的数组成员,也有可能随时要删除rbs的某一数组成员,请问:我该怎么做?
    2010年2月21日 6:26

答案

  • 直接利用系统的数组是不好完成的

    你写2个方法,一个是add,一个是delete

    add的时候 需要重新new这个数组

    delete也一样

    不同的是少数组元素

    把原来的数组复制给这个new的数组,然后在赋值给rbs

    ps,土办法


    family as water
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 7:14
  • Mr.周 的意思是,你把rbs_struct 作为对象整个的放到List<> 里面去管理。eg:

            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }

    System.Collections.Generic.List<rbs_struct> _rbs = new System.Collections.Generic.List<rbs_struct>();

    添加:
    rbs_struct item;
    item.MainTab = "TAB-1";
    item.ChildTab = 1;
    ……
    _rbs.Add(item);

    删除:
    _rbs.Remove(0); // 0 代表要删除对象的索引值
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 8:24
  • 你好!
         建议你直接使用List<T>这个类,数组动态调整比较困难!
         List<T>类完全可以满足你的需要!
         希望对你有帮助!
    周雪峰
    采用该方法,能不能自定义多数据类型的,比如:
            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }

    当然可以,这就是这个泛型类的设计的目的!
    周雪峰
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 8:35
    版主

全部回复

  • 直接利用系统的数组是不好完成的

    你写2个方法,一个是add,一个是delete

    add的时候 需要重新new这个数组

    delete也一样

    不同的是少数组元素

    把原来的数组复制给这个new的数组,然后在赋值给rbs

    ps,土办法


    family as water
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 7:14
  • 你好!
         建议你直接使用List<T>这个类,数组动态调整比较困难!
         List<T>类完全可以满足你的需要!
         希望对你有帮助!
    周雪峰
    2010年2月21日 7:19
    版主
  • 你好!
         建议你直接使用List<T>这个类,数组动态调整比较困难!
         List<T>类完全可以满足你的需要!
         希望对你有帮助!
    周雪峰
    采用该方法,能不能自定义多数据类型的,比如:
            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }
    2010年2月21日 7:50
  • 你好!
         建议你直接使用List<T>这个类,数组动态调整比较困难!
         List<T>类完全可以满足你的需要!
         希望对你有帮助!
    周雪峰
    采用该方法,能不能自定义多数据类型的,比如:
            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }
    这是完全可以的,使用泛型是比较好的选择。
    知识改变命运,奋斗成就人生!
    2010年2月21日 8:22
    版主
  • Mr.周 的意思是,你把rbs_struct 作为对象整个的放到List<> 里面去管理。eg:

            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }

    System.Collections.Generic.List<rbs_struct> _rbs = new System.Collections.Generic.List<rbs_struct>();

    添加:
    rbs_struct item;
    item.MainTab = "TAB-1";
    item.ChildTab = 1;
    ……
    _rbs.Add(item);

    删除:
    _rbs.Remove(0); // 0 代表要删除对象的索引值
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 8:24
  • 你好!
         建议你直接使用List<T>这个类,数组动态调整比较困难!
         List<T>类完全可以满足你的需要!
         希望对你有帮助!
    周雪峰
    采用该方法,能不能自定义多数据类型的,比如:
            public struct rbs_struct
            {
                public string MainTab;
                public int ChildTab;
                public byte SelectedText;
            }

    当然可以,这就是这个泛型类的设计的目的!
    周雪峰
    • 已标记为答案 fss199 2010年2月21日 8:39
    2010年2月21日 8:35
    版主