首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于仿C ++ union的写法解决办法

2012-12-14 
关于仿C ++ union的写法本帖最后由 qqmts 于 2012-12-07 14:39:30 编辑小弟原本是学习C ++的而最近开始接

关于仿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 

热点排行