想用C#实现以下VB代码,C#用的太少,请各位指点一下该怎么写,以下是VB代码
Private Type typDetail
    jan                 As String
    itemcode            As String
    itemname            As String
    standard            As String
    box                 As String
    ball                As String
End Type
Dim udtDetail()     As typDetail   //我想用结构,但使用结构的话可以再初始化为动态数组么……
ReDim Preserve udtDetail(vsbScroll.Value + Index) As typDetail //这是在保留原来数组数据的前提下添加一条新的记录,C#里面该怎么实现呢?用ArrayList么?还请大家指点一下

解决方案 »

  1.   


    这个部分可以用类来写,而且很安全:public class TypDetail
    {
      private string jan;
      private string itemcode;
      //等等
      public string Jan 
      {
        set {jan = value; }
        get {return jan; }
      }
      public string Itemcode
      {
        set {itemcode= value; }
        get {return itemcode; }
      }
    }
    不需要使用结构,可以构建一个List<T>的泛型,就兼具了数组的功能using System.Collections.Generic;List<TypDetail> list = new List<TypDetail>();
    //使用list.Add();添加数组的数据;
    //使用list.ToArray();转换为数组使用,或者直接用list索引使用。以上代码需要.NetFramework2.0以上.
    仅供参考
      

  2.   

    我用的是1.1,不支持List<T>~~
      

  3.   

    实现vb中redim保留原有数组数据   在c#中用ArrayList   
    至少我是这样用的  没想到其他更好的方法
      

  4.   

    那就只好使用ArrayList了,不过效率不会很高。ArrayList array = new ArrayList();
    //使用array.Add();添加数组的数据;
    //使用array.ToArray();转换为数组使用,或者直接用array索引使用。
    TypDetail[] typGroup =(TypDetail[])array.ToArray();
      

  5.   

    使用数组ArrayList要引用什么空间么还是怎么,我定义的数组怎么不能用呢。.后面什么也没有
      

  6.   

    好像是要定义在方法体里面,请问wood001我想要页面内的全局数组怎么写呢
      

  7.   

    楼主写的是Web还是WinForm?
    如果是Web,在Load上面声明,最好写到Session里面避免丢失。
    如果是WinForm,在类声明的下面声明并且实例化就可以了。
    需要System.Collections命名空间
      

  8.   

    不好意思,还得问一下如果我想得到typGroup[2].itemcode我该怎么写?就是第二条记录的itemcode字段
      

  9.   


    TypDetail typ = (TypDetail)typGroup[2];
    String s = typ.itemcode;声明一个该类型的变量,把地址接到,就可以访问了。
      

  10.   

    wood001可以帮忙写个实例么,我怎么写不出来呢,我再追加100分
      

  11.   

    http://www.developerfusion.com/tools/convert/csharp-to-vb/
    C# VB 互转
      

  12.   

    写了一个示例,你看看吧。class Program
        {
            static void Main (string[] args) {
                DoTyp don = new DoTyp();
                for (int i = 0; i < 10; i++) {
                    TypDetail typ = new TypDetail();
                    typ.sName = "Name" + i.ToString();
                    typ.sPass = "Pass" + i.ToString();
                    typ.sAll = "All" + i.ToString();                don.AddArray(typ);
                }            if (don.List.Count > 0) {
                    Console.WriteLine(don.GetArray()[0].sName);
                    Console.WriteLine(don.GetOneArray(9).sName);
                }
                Console.Read();
            }
        }    public struct TypDetail
        {
            public string sName;
            public string sPass;
            public string sAll;
        }    public class DoTyp
        {
            ArrayList list = new ArrayList();        public ArrayList List {
                get {
                    return list;
                }
                set {
                    list = value;
                }
            }        public void AddArray (TypDetail typ) {
                list.Add(typ);
            }        public TypDetail[] GetArray () {
                if (list.Count > 0) {
                    TypDetail[] typArray = new TypDetail[list.Count];
                    int i = 0;
                    foreach (TypDetail typ in list) {
                        typArray[i] = typ;
                        i++;
                    }
                    return typArray;
                } else {
                    return null;
                }
            }        public TypDetail GetOneArray (int iIndex) {
                TypDetail typ = new TypDetail();
                if (iIndex < list.Count && iIndex >= 0) {
                    typ = (TypDetail)list[iIndex];
                }
                return typ;
            }
        }