关于C#中结构体位段的问题

2025-01-18 17:04:10
推荐回答(5个)
回答1:

对于C/C++的位段不太了解,不知道楼主要的是不是这个效果

[System.Runtime.InteropServices.StructLayout(
        System.Runtime.InteropServices.LayoutKind.Explicit)]
    struct test1
    {
        [System.Runtime.InteropServices.FieldOffset(0)]
        public UInt16 a;
        [System.Runtime.InteropServices.FieldOffset(1)]
        public UInt16 b;
    }

这样是表示a变量到结构体起始位置偏移量为0,b到结构体起始位置偏移量为1,单位是字节

回答2:

用Byte数组吧。自己写个类。
一个1数组的Byte就是1位,2个元素的Byte数组就是2位。至于操作类,慢慢写吧,挺烦。

回答3:

有啊 c#中结构体和类的定义很相似,只是在内存中的方式不一样

回答4:

拖拽效果有点小麻烦,改成双击就容易实现.
拖拽的话,需要在treeview上实现mouse_move,就是鼠标移动的时候,有左键按下代表正在拖动,
panel上需要实现dragdrop和dragenter就是拖动对象放下的事件和拖进panel控件的事件.
panel还要安排多个标签的位置防止标签重叠.

回答5:

基本上除非你要和COM组件去互操作,本来你用C#就不用去操心内存的问题。如果非要操作位,使用System.Collections.BitArray类。
http://msdn.microsoft.com/zh-cn/library/system.collections.bitarray.aspx