结构数组的问题

daemonking 2004-10-26 04:42:22
我现在有一段vc的代码,要改写为C#代码,是一个关于结构数组的初始化问题。
代码如下:
--------------------------------VC 代码-------------------------------------------------
//declare struct
typedef struct propmod
{
ACTN actn;
PROPTYPE prop;
int offset;
} PROP;

// init struct array
PROP rgprop[ipropMax] = {
actnByte, propChp, offsetof(CHP, fBold),
actnByte, propChp, offsetof(CHP, fItalic),
actnByte, propChp, offsetof(CHP, fUnderline),
actnWord, propPap, offsetof(PAP, xaLeft),
}

---------------------------c# 代码-------------------------------------------------------
public struct propmod
{
ACTN actn;
PROPTYPE prop;
int offset;
}
但是不知道关于这个struct的数组如何进行改写。
...全文
162 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
heiding 2004-10-26
  • 打赏
  • 举报
回复
抱歉,刚刚误发送!
public struct propmod
{
ACTN actn; PROPTYPE prop; int offset;

public propmod(ACTN a,PROPTYPE p, int o)
{
actn = a;
prop = p;
offset = o;
}
}


heiding 2004-10-26
  • 打赏
  • 举报
回复
在.net中,结构属原值类型,所以在进行实例化之前必须对其进行初始化,所以我们可以采用结构构造函数的方法如
public struct propmod
{
ACTN actn; PROPTYPE prop; int offset;


public Point(int p1, int p2)
{
x = p1;
y = p2;
}
}

class MainClass
{
public static void Main()
{
// Initialize:
Point myPoint = new Point();
Point yourPoint = new Point(10,10);
daemonking 2004-10-26
  • 打赏
  • 举报
回复
to ffb(项目急,顾不了结构的) :
用byte[]接收什么????我是把VC程序改写为C#,不是要调用VC的DLL
__smallPig__ 2004-10-26
  • 打赏
  • 举报
回复
我是新手,有个方法看行不行?

actnByte, propChp, offsetof(CHP, fBold),
actnByte, propChp, offsetof(CHP, fItalic),
actnByte, propChp, offsetof(CHP, fUnderline),
actnWord, propPap, offsetof(PAP, xaLeft),
复制下来变成一个文本文件..格式要好点..
再用C#来读吧,正则表达式应该能读出来吧..然后再调用.
propmod[] p = new propmod[10];

for(int i=0;i<maxSize;i++)
{
//这儿是读文本的代码..应该不难吧..
p[i] = new propmod();
p[i].actn = ....;
p[i]........
}
ffb 2004-10-26
  • 打赏
  • 举报
回复
全部用byte[]接收,然后用PtrToStruct转换!!
daemonking 2004-10-26
  • 打赏
  • 举报
回复
to eradium(雷电) :
或许我说得不清楚,
因为我有VC的code,我要的结果是,在C#中有没有简单的方法,就像我给出的VC代码一样,对结构数组进行初始化,从而可以省一些时间,毕竟这个初始化的工作量很大的
你说的那个样子我也会,但是,初始化结构数组的数据是没有任何规律的,你让我如何使用循环?
eradium 2004-10-26
  • 打赏
  • 举报
回复
propmod[] p = new propmod[10];//这里已经对数组的每个成员都实例化了。不用再次实例化。

for(int i=0;i<10;i++)
{
p[i].actn = ....;
p[i]........
}
daemonking 2004-10-26
  • 打赏
  • 举报
回复
to shuker(我是一只小花猪):
请看我给出的代码!!
这些代码没有任何的规律,
现在的初始化办法就是一个一个地写了,我不想一个一个地写
xiaohutushen 2004-10-26
  • 打赏
  • 举报
回复
友情up
shuker 2004-10-26
  • 打赏
  • 举报
回复
propmod[] p = new propmod[10];

for(int i=0;i<10;i++)
{
p[i] = new propmod();
p[i].actn = ....;
p[i]........
}

这段代码可以放在某给类的构造函数中执行

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧