Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c# union

作者:恋你如初   发布日期:2025-12-14   浏览:72

using System;

public class Program
{
    // 定义一个包含联合体的结构体
    [StructLayout(LayoutKind.Explicit)]
    public struct MyUnion
    {
        [FieldOffset(0)]
        public int intValue;

        [FieldOffset(0)]
        public double doubleValue;

        [FieldOffset(0)]
        public char charValue;
    }

    public static void Main()
    {
        MyUnion myUnion = new MyUnion();

        // 设置intValue
        myUnion.intValue = 12345;
        Console.WriteLine($"intValue: {myUnion.intValue}");

        // 设置doubleValue,注意这会覆盖之前的intValue
        myUnion.doubleValue = 123.456;
        Console.WriteLine($"doubleValue: {myUnion.doubleValue}");

        // 设置charValue,注意这也会覆盖之前的值
        myUnion.charValue = 'A';
        Console.WriteLine($"charValue: {myUnion.charValue}");
    }
}

解释说明:

  1. 联合体(Union):在C#中,联合体可以通过[StructLayout(LayoutKind.Explicit)][FieldOffset]属性来实现。多个字段共享同一块内存空间。
  2. MyUnion 结构体:定义了一个包含三个字段的联合体,分别是intdoublechar类型。
  3. FieldOffset 属性:指定字段在内存中的偏移量。由于所有字段的偏移量都为0,它们共享同一块内存。
  4. Main 方法:演示了如何设置和读取联合体中的不同类型的值。每次设置新的值时,之前存储的值会被覆盖。

这个示例展示了如何使用联合体在C#中共享内存,但需要注意的是,这种用法可能会导致数据不一致或难以调试的问题,因此应谨慎使用。

上一篇:c# task.delay

下一篇:c# mongodb

大家都在看

c# 二进制

c# datatable group by

c# tcp client

c# type.gettype

c# sqlconnection

c# string.format 小数位数

.net和c#

c#获取系统时间

c#游戏开发

c#网络编程

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站