C#创建联合类型的结构

本文介绍了C#中如何使用StructLayoutAttribute创建联合类型结构,如SignedNumber和SignedNumberWithText,强调了存储和提取数据时数据类型匹配以及偏移量的重要性。
摘要由CSDN通过智能技术生成
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace 创建联合类型的结构
{
    //定义一个联合类型,其中能存储一个带符号的数值
    [StructLayoutAttribute(LayoutKind.Explicit)]
    struct SignedNumber
    {
        //利用FieldOffSet特性标记结构中的每个字段
        [FieldOffsetAttribute(0)]
        public sbyte Num1;
        [FieldOffsetAttribute(0)]
        public short Num2;
        [FieldOffsetAttribute(0)]
        public int Num3;
        [FieldOffsetAttribute(0)]
        public long Num4;
        [FieldOffsetAttribute(0)]
        public float Num5;
        [FieldOffsetAttribute(0)]
        public double Num6;
    }
    //这个结构类似SignedNumber结构,不同之处是除了带符号的数值之外,还包含string类型
    [StructLayoutAttribute(LayoutKind.Explicit)]
    struct SignedNumberWithText
    {
        [FieldOffsetAttribute(0)]
        public sbyte Num1;
        [FieldOffsetAttribute(0)]
        public short Num2;
        [FieldOffsetAttribute(0)]
        public int Num3;
        [FieldOffsetAttribute(0)]
        public long Num4;
        [FieldOffsetAttribute(0)]
        public float Num5;
        [FieldOffsetAttribute(0)]
        public double Num6;
        [FieldOffsetAttribute(16)]
        public string Text1;
    }

记录:

联合(union),作用和其他语言的联合一样。使用时要注意存储的和提取的数据类型是不是一样

注意偏移量,这个和博图里的变量设置偏移量一个道理,每个类型都要注意占多少位

由于StructLayoutAttribute 可以同时应用于结构和类,在创建联合数据类型时也可以使用类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值