作者clarkman (凉雨)
看板C_Sharp
标题Re: [问题] struct
时间Tue Jan 25 10:42:17 2011
: 我宣告一个struct...
: struct Student
: {
: [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
: public int[] No;
: }
:
: 然後在Main里面
: Student[] stu = new Student[50];
: 则
: stu[1].No[2] = 5;
: 不知道这个式子为什麽会错误??
: 是不是没有new?
: 换用class可以解决吗?
: = ="刚学C#不太熟...麻烦高手指教...谢谢!!
:
: 推 tomex:你的No[]并未初始化,记得要先new才能assign值! 10/16 20:11
不好意思,我也是刚学c#,也想请问一下
我有查到他是因为没有被实体化,要new才能使用,
但是我很疑惑,No不是已经用MarshalAs转成阵列了吗?
如果这个只能当作指标,为何还要给予SizeConst长度?
如果是为了让Marshal.Sizeof计算struct的大小,那他不就已经是阵列才要将阵列的
长度大小进去吗?
我有使用Marshal.Sizeof检查,确定阵列的长度会算入结构里面,所以看起来应该是
建立了阵列,才会这样。但实际上,我却必须new给No一段空间,才能使用,用起来却
像是指标。
我如果用string, [MarshalAs(UnmanagedType.ByValStr)]转换的话,就不需要再new,
虽然使用sreing本来就可以直接赋值,但总是觉得怪怪的,不太懂Array为何不是被定义
成阵列,而是变成类似指标?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.66.251.14
※ 编辑: clarkman 来自: 203.66.251.14 (01/25 10:48)