关于仿C ++ union的写法
本帖最后由 qqmts 于 2012-12-07 14:39:30 编辑 小弟原本是学习C ++的
而最近开始接触C#
所以遇到一些C ++有的,但是C#不知道如何实现的功能。
如union就是一个例子
在C ++中,我有用到类似像这样的功能
//=================================================
struct 16Bits_Struct
{
union
{
__int16 Data_16;
struct
{
__int16 Data_16_B00:1,
Data_16_B01:1,
Data_16_B02:1,
Data_16_B03:1,
Data_16_B04:1,
Data_16_B05:1,
Data_16_B06:1,
Data_16_B07:1,
Data_16_B08:1,
Data_16_B09:1,
Data_16_B10:1,
Data_16_B11:1,
Data_16_B12:1,
Data_16_B13:1,
Data_16_B14:1,
Data_16_B15:1;
};
};
};
//=================================================
不知道如何在C#底下实现,希望有人可以指导一下阿
[最优解释]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
[StructLayout(LayoutKind.Explicit)]
struct MyUnion
{
[FieldOffset(0)]
public short Data_16;
public bool Data_16_B00
{
get { return (Data_16
[其他解释]
C# 没有那么多精准的内存控制,用C#不要想那么多。
多关注代码的逻辑本身。而不要太关注内存怎么分配
[其他解释]
union就用一般的class表示好了。
[其他解释]
F#倒是可以实现,但由于F#也是.NET上运行的,所以估计也不会和C++一样的原理。
[其他解释]
1) == Data_16; }
set { if (value) Data_16 = (short)(Data_16