C++中含有union的stuct,如何在C#中定义

boblaw 2011-06-12 02:16:15

typedef struct tagMarket {
union {
WORD m_wMarket;
char m_EShortName[3];
};
char m_Name[16];
char m_CShortName[5];
unsigned long m_lProperty;
unsigned long m_lDate;
short m_PeriodCount;
short m_OpenTime[5];
short m_CloseTime[5];
short m_nCount;
StockInfo m_Siif[1];
} SCMarket;

请教,有如上一个C++中的Struct,包含一个union,如何在C#中定义?
...全文
278 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lizhibin11 2011-06-12
  • 打赏
  • 举报
回复

unsafe struct tagMarket
{
public fixed sbyte m_EShortName[4];//这个字段代替union
public fixed sbyte m_Name[16];
public fixed sbyte m_CShortName[5];
public uint m_lProperty;
public uint m_lDate;
public short m_PeriodCount;
public fixed short m_OpenTime[5];
public fixed short m_CloseTime[5];
public short m_nCount;
public StockInfo m_Siif[1];
//下面的方法代替m_wMarket读写
public void writemarket(ushort market)
{
//////
}
public ushort getmarket()
{
///////
}
}

估计得写成这个样子,m_EShortName定义四个字节才能保证对齐。
x8bits 2011-06-12
  • 打赏
  • 举报
回复
想这样...
[System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Explicit)]
public struct MyUnion
{
[System.Runtime.InteropServices.FieldOffsetAttribute(0)]
public ushort m_wMarket;
[System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst=3, ArraySubType=System.Runtime.InteropServices.UnmanagedType.I1)]
[System.Runtime.InteropServices.FieldOffsetAttribute(0)]
public byte[] m_EShortName;
}
足球中国 2011-06-12
  • 打赏
  • 举报
回复
struct union
{
int m_wMarket;
[(3)]
byte[] m_EShortName;
}

当成struct 理论上应该是可以的。
用指针直接用byte然后再自己组装应该也可以。
hnfeitianwugui 2011-06-12
  • 打赏
  • 举报
回复
C#有union吗?
boblaw 2011-06-12
  • 打赏
  • 举报
回复
我问的是struct中包含union,如何定义
内容概要:本文档是一份针对2025-2026年Java后端大厂面试的高频考点全面梳理,涵盖Java基础、集合框架、并发编程、JVM、Spring全家桶、MySQL、Redis、消息队列、分布式与微服务等核心技术模块。内容不仅包括经典概念辨析(如String与StringBuilder区别、HashMap底层结构),还深入源码机制与设计原理(如Spring三级缓存解决循环依赖、AOP动态代理实现),并结合实际场景探讨问题排查与技术选型(如GC调优、缓存穿透解决方案)。特别强调从“背八股”向源码理解、线上排障和设计权衡的能力转变,体现当前面试趋势的深度化与实战化。; 适合人群:具备1-3年工作经验,准备冲击高级Java岗位的研发人员,尤其适合希望系统提升面试竞争力、深入理解主流技术底层原理的开发者。; 使用场景及目标:①应对大厂Java后端技术面试,掌握高频考点与最新趋势;②深入理解核心技术的设计动机与实现细节,如ConcurrentHashMap的线程安全机制、分布式ID生成方案对比;③提升实际问题分析与解决能力,如Full GC排查、事务失效定位等。; 阅读建议:此资源以面试为导向,兼具广度与深度,建议结合自身项目经验进行对照学习,注重理解“为什么”而非仅仅记忆结论,对关键知识点应动手验证(如ThreadLocal内存泄漏实验),并在模拟面试强化表达逻辑。

111,129

社区成员

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

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

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