现在想要用到的是类似于C++中的MAP,VECTOR等容器。在C#中分别是那些?要包含什么头文件?
还有, C#中的动态数组是怎么定义的,我现在需要一个动态数组中间存放的是一些自己定义的struct类型的变量,同时这样的动态数组还要求被传送到其他对象中去,应该怎么做?

解决方案 »

  1.   

    有很多列表的类,楼主可以搜点资料看看
    Hashtable vHashtable = new Hashtable();
    vHashtable.Add(1, "1");
    vHashtable.Add(2, "2");List<int> vList = new List<int>();
    vList.Add(1); 
    vList.Add(2); 
    vList.Add(3);
    vList.RemoveAt(0);ArrayList vArrayList = new ArrayList();
    vArrayList.Add(1);
    vArrayList.Add(2);
    vArrayList.Add(3);
    vArrayList.RemoveAt(2);Dictionary<string, int> vDictionary = new Dictionary<string, int>();
    vDictionary.Add("A", 1);
    vDictionary.Add("A", 2);
      

  2.   

    C#中的动态数组没有动态数组,不过可以用system.collections空间中的类来代替
    如hashtable,sortedlist,arraylist
      

  3.   

    C#的集合可以实现c++容器类的一些功能,不过LZ要使用结构来填充容器,建议使用C#的泛型,
    泛型很象c++的STL,但是是类型安全的。由于c#中结构算值类型的,如果使用集合会存在装箱和拆箱的问题
    所以还是使用泛型较好。
      

  4.   

    nacarat 
    坐拥书城不释卷,红袖添香夜读书。MSN:[email protected] 
    等 级:
     发表于:2007-11-23 22:59:122楼 得分:0 
    C#中的动态数组没有动态数组,不过可以用system.collections空间中的类来代替 
    如hashtable,sortedlist,arraylist 
     
    -----------------
    用System.Collections.Generic下的那几个泛型类的不是更好嘛-_-...
      

  5.   

    哇拷认真一看在我前面的前面的居然是nacarat~
    顺便悄悄的问一下:
    你真的是女的吗?:D
      

  6.   

    C#的泛型是2.0的,我现在的开发平台是.net 2003。所以,不好用。那我现在是不是只能用ArrayList?还有,ArrayList中如果存放结构体会不会存在问题?
      

  7.   

    .net 2003的话就只能用集合了,使用集合装入结构体是存在问题。
    前面我说过结构体在C#里是当作值类行处理的,而集合内元素都是object
    所以在加入集合和取出是要进行装箱和拆箱操作,同时读出时要进行类型转换
    存在不安全的问题。
    一个好的处理办法就是不使用结构体,把所有的结构体全部定义成类,这样就不存在问题了。