想用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么?还请大家指点一下
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么?还请大家指点一下
这个部分可以用类来写,而且很安全: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以上.
仅供参考
至少我是这样用的 没想到其他更好的方法
//使用array.Add();添加数组的数据;
//使用array.ToArray();转换为数组使用,或者直接用array索引使用。
TypDetail[] typGroup =(TypDetail[])array.ToArray();
如果是Web,在Load上面声明,最好写到Session里面避免丢失。
如果是WinForm,在类声明的下面声明并且实例化就可以了。
需要System.Collections命名空间
TypDetail typ = (TypDetail)typGroup[2];
String s = typ.itemcode;声明一个该类型的变量,把地址接到,就可以访问了。
C# VB 互转
{
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;
}
}