将C转换为C#

我正在尝试将此C代码转换为C#,是否有C#等效于C union typedef?

struct sockaddr_in { short sin_family; u_short sin_port; struct in_addr sin_addr; char sin_zero[8]; }; typedef struct in_addr { union { struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; struct { u_short s_w1,s_w2; } S_un_w; u_long S_addr; } S_un; } IN_ADDR, *PIN_ADDR, FAR *LPIN_ADDR; 

谢谢。

您可以查看以下页面 。 这就是说,在.NET中你有类允许你直接使用套接字和TCP / IP,如Socket,TcpListener,TcpClient,你不需要盲目地翻译C代码。

虽然其他人肯定有一点 – 这可能是你真的不需要做的事情 – 有一种方法可以使用StructLayoutAttribute模拟C#中的联合( 这里模拟联合的例子)。

但不要这样做。 这个C联合的目的似乎是允许4个字节长的位部分。 以这种方式使用联合取决于目标体系结构的字节顺序知识,这是C#无法保证的。

在C#中 – 或任何其他可移植性问题的语言 – 如果要获取或设置高字节/低字节/等,则需要使用显式位移,如此处所述。

但是那时也不要这样做。 像其他人一样说并且不要移植这段代码。 有人已经为你完成了,很可能是内置库中的Microsoft;)。