C#的sizeof运算符怎么获取类型大小?支持哪些类型?

小老鼠
发布: 2025-08-25 09:23:01
原创
575人浏览过
答案是C#的sizeof运算符用于获取非托管类型在编译时的内存大小,支持基本数据类型、枚举和仅含非托管字段的结构体,但不支持引用类型。

c#的sizeof运算符怎么获取类型大小?支持哪些类型?

C#的

sizeof
登录后复制
运算符主要用于在编译时获取非托管值类型在内存中占用的字节数。它直接操作的是类型在内存中的固定大小,通常用于各种基本数据类型、枚举以及只包含非托管字段的结构体。

解决方案

sizeof
登录后复制
运算符在C#中是一个编译时常量表达式,这意味着它在程序编译阶段就已经确定了结果。它的核心作用是提供一个类型在内存中占据的固定字节大小。但要注意,它并非万能,有其特定的使用范围和限制。

要使用

sizeof
登录后复制
,你必须在
unsafe
登录后复制
(不安全)代码块或方法中使用它。这是C#为了保证类型安全而设定的一个“门槛”。一旦进入
unsafe
登录后复制
上下文,你就直接和内存地址打交道了,这就像C/C++那样,获得了更大的自由,但也承担了更多责任——比如内存越界、指针悬挂等风险。

语法非常直接:

sizeof(TypeName)
登录后复制
。其中
TypeName
登录后复制
必须是一个非托管类型。

可图大模型
可图大模型

可图大模型(Kolors)是快手大模型团队自研打造的文生图AI大模型

可图大模型 32
查看详情 可图大模型
using System;

public unsafe class MemoryExamples
{
    public static void Main(string[] args)
    {
        Console.WriteLine($"int 类型大小: {sizeof(int)} 字节");
        Console.WriteLine($"double 类型大小: {sizeof(double)} 字节");
        Console.WriteLine($"bool 类型大小: {sizeof(bool)} 字节"); // 通常是1字节
        Console.WriteLine($"char 类型大小: {sizeof(char)} 字节"); // 2字节,UTF-16
        Console.WriteLine($"long 类型大小: {sizeof(long)} 字节");

        // 结构体示例
        MyStruct s = new MyStruct();
        Console.WriteLine($"MyStruct 类型大小: {sizeof(MyStruct)} 字节");

        // 指针类型大小取决于平台(32位或64位)
        Console.WriteLine($"int* 类型大小: {sizeof(int*)} 字节");
        Console.WriteLine($"void* 类型大小: {sizeof(void*)} 字节");

        // 尝试获取引用类型的大小会报错
        // Console.WriteLine($"string 类型大小: {sizeof(string)} 字节"); // 编译错误
    }

    // 一个简单的非托管结构体
    public struct MyStruct
    {
        public int A;
        public byte B;
        public short C;
    }
}
登录后复制

从上面的例子可以看出,

sizeof
登录后复制
返回的是该类型在内存中占据的字节数。对于引用类型,比如
string
登录后复制
或任何类,
sizeof
登录后复制
是不能直接使用的,因为它们的大小不是编译时固定的,且它们的数据是存储在托管堆上的,变量本身只保存一个引用(指针)。

sizeof
登录后复制
支持哪些具体类型?为什么有些类型不行?

sizeof
登录后复制
运算符在C#中支持的类型范围比你想象的要窄一些,它主要针对的是所谓的“非托管类型”(unmanaged types)。

**具体支持的类型包括:

以上就是C#的sizeof运算符怎么获取类型大小?支持哪些类型?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号