求:c#结构体内数组以及结构体嵌套

axia_T 2007-03-15 01:49:20
/*结构体原型
typedef struct {
unsigned int s;
unsigned int d;
unsigned int SP[4][4];
} A;

typedef struct {
unsigned char mv;
unsigned char n;
B sb;
unsigned int cn;
unsigned int Seg[8];
int* r1;
unsigned char* r2[512];
} B;

*/
用C#怎么写
...全文
623 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
axia_T 2007-03-15
  • 打赏
  • 举报
回复
'这里有VB.NET的写法,可以用C#写出来吗

Public Const C1 As Short = 8
Public Const C2 As Short = 8

Structure A
Dim s As Integer
Dim d As Integer
<VBFixedArray(C1, 4)> Dim Sig(,) As Integer

Public Sub Initialize()
ReDim Sig(C1, 4)
End Sub
End Structure

Structure B
<VBFixedString(1), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=1)> Public mv As String
<VBFixedString(1), System.Runtime.InteropServices.MarshalAs(System.Runtime.InteropServices.UnmanagedType.ByValTStr, SizeConst:=1)> Public n As String
Dim sb As B
Dim cn As Integer
<VBFixedArray(C2)> Dim Seg() As Integer

Public Sub Initialize()
ReDim Seg(C2)
End Sub
End Structure
axia_T 2007-03-15
  • 打赏
  • 举报
回复
嵌套不能用public b sp;
错误信息:causes a cycle in the struct layout
Red_angelX 2007-03-15
  • 打赏
  • 举报
回复
[Marshal]
我是建议把struct当成class来写 反正是一样的调用
指针麻..........,Marshal里好像也有
Red_angelX 2007-03-15
  • 打赏
  • 举报
回复
public int[8] Seg;
一样报错 不能这么写
要用到那个[Mar..]什么的忘了
cangwu_lee 2007-03-15
  • 打赏
  • 举报
回复
public int[8] Seg;
Red_angelX 2007-03-15
  • 打赏
  • 举报
回复
public int[] Seg=new int[8];
struct中不能有new 不能赋值
Red_angelX 2007-03-15
  • 打赏
  • 举报
回复
struct不是很好写,要用到Invoke的那种写法
简单的方法就是把struct当成class来写
北京的雾霾天 2007-03-15
  • 打赏
  • 举报
回复
指针的还不知道怎么表示,但是类型嵌套应是如下的样式:

struct b
{
public char mv;
public char n;
public b sp;
public int cn;
public int[] Seg=new int[8];
...
}
Red_angelX 2007-03-15
  • 打赏
  • 举报
回复
沙发先

110,536

社区成员

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

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

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