C#数据类型(值类型+引用类型+指针类型)

简介: C#数据类型分三类:值类型(如int、bool,直接存值)、引用类型(如string、object,存内存地址)和指针类型(用于直接内存操作)。值类型继承自System.ValueType,占用栈内存;引用类型在堆中分配,支持装箱/拆箱;指针需在unsafe上下文中使用。

C# 语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型,C# 中的数据类型可以大致分为三类:

  • 值类型(Value types);
  • 引用类型(References types);
  • 指针类型(Pointer types)。

值类型

C# 中的值类型是从 System.ValueType 类中派生出来的,对于值类型的变量我们可以直接为其分配一个具体的值。当声明一个值类型的变量时,系统会自动分配一块儿内存区域用来存储这个变量的值,需要注意的是,变量所占内存的大小会根据系统的不同而有所变化。


C# 中的值类型有很多,如下表所示:


类型 描述 范围 默认值
bool 布尔值 True 或 False False
byte 8 位无符号整数 0 到 255 0
char 16 位 Unicode 字符 U +0000 到 U +ffff '\0'
decimal 128 位精确的十进制值,具有 28~29 个有效位数 (-7.9 x 1028 到 7.9 x 1028) / 100 到 28 0.0M
double 64 位双精度浮点型 (+/-)5.0 x 10-324 到 (+/-)1.7 x 10308 0.0D
float 32 位单精度浮点型 -3.4 x 1038 到 + 3.4 x 1038 0.0F
int 32 位有符号整数类型 -2,147,483,648 到 2,147,483,647 0
long 64 位有符号整数类型 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 0L
sbyte 8 位有符号整数类型 -128 到 127 0
short 16 位有符号整数类型 -32,768 到 32,767 0
uint 32 位无符号整数类型 0 到 4,294,967,295 0
ulong 64 位无符号整数类型 0 到 18,446,744,073,709,551,615 0
ushort 16 位无符号整数类型 0 到 65,535 0


如果想要获取类型或变量的确切大小,可以使用 sizeof 方法,示例代码如下:

using System;


namespace c.biancheng.net{

   class Program {

       static void Main(string[] args) {

           Console.WriteLine("int 类型的大小为: {0}", sizeof(int));

           Console.ReadLine();

       }

   }

}

编译并执行上述代码,运行结果如下:

int 类型的大小为: 4

引用类型

引用类型的变量中并不存储实际的数据值,而是存储的对数据(对象)的引用,换句话说就是,引用类型的变量中存储的是数据在内存中的位置。当多个变量都引用同一个内存地址时,如果其中一个变量改变了内存中数据的值,那么所有引用这个内存地址的变量的值都会改变。C# 中内置的引用类型包括 Object(对象)、Dynamic(动态)和 string(字符串)。

1) 对象类型(Object)

对象类型是 C# 通用类型系统(Common Type System:CTS)中所有数据类型的最终基类,Object 是 System.Object 类的别名。任何类型的值都可以分配给对象类型,但是在分配值之前,需要对类型进行转换。


将值类型转换为对象类型的过程被称为“装箱”,反之将对象类型转换为值类型的过程则被称为“拆箱”。注意,只有经过装箱的数据才能进行拆箱。

2) 动态类型(Dynamic)

您可以在动态类型的变量中存储任何类型的值,这些变量的类型检查是在程序运行时进行的。动态类型的声明语法如下所示:

dynamic <variable_name> = value;

例如:

dynamic d = 20;

动态类型与对象类型类似,但对象类型变量的类型检查是在编译时进行的,而动态类型变量的类型检查则是在程序运行时进行的。

3) 字符串类型(String)

字符串类型的变量允许您将一个字符串赋值给这个变量,字符串类型需要通过 String 类来创建,String 类是 System.String 类的别名,它是从对象(Object)类型中派生的。在 C# 中有两种定义字符串类型的方式,分别是使用" "@" "


示例代码如下:

//使用引号的声明方式

String str = "http://c.biancheng.net/";

//使用 @ 加引号的声明形式

@"http://c.biancheng.net/";

使用@" "形式声明的字符串称为“逐字字符串”,逐字字符串会将转义字符\当作普通字符对待,例如string str = @"C:\Windows";等价于string str = "C:\\Windows";


另外,在@" "形式声明的字符串中可以任意使用换行,换行符及缩进空格等都会计算在字符串的长度之中。

指针类型

C# 语言中的指针是一个变量,也称为定位器或指示符,其中可以存储另一种类型的内存地址。C# 中的指针与 C 或 C++ 中的指针具有相同的功能。


指针类型的声明语法如下所示:

type* identifier;

例如:

char* cptr;

int* iptr;

相关文章
|
8天前
|
人工智能 数据可视化 网络安全
阿里云/本地一键部署OpenClaw(Clawdbot)教程
OpenClaw(原Clawdbot)作为轻量级AI自动化代理工具,2026年版本在部署灵活性上实现重大升级,既支持本地私有化部署(满足数据隐私、内网使用需求),也适配阿里云一键部署方案(兼顾便捷性与云端稳定性)。本文将完整拆解两种部署方式的核心流程,从环境准备、安装配置到功能验证,包含实操代码命令与避坑技巧,无论你是需要本地私有化部署的企业用户,还是追求零门槛的个人用户,都能快速完成OpenClaw的落地使用。
264 1
|
19天前
|
人工智能 自然语言处理 安全
Open Claw 2.6.4 Windows 一键部署完整教程(技术分享)
OpenClaw(昵称“小龙虾”)是2026年热门开源AI智能体,GitHub星标超28万。支持本地运行、零代码操作、跨平台部署,可理解自然语言指令,自动完成文件管理、数据处理、浏览器自动化等任务,一键安装,隐私安全。
|
24天前
|
监控 前端开发 中间件
【开源剪映小助手】调试与故障排除
本指南面向capcut-mate开发者,系统梳理Python后端(FastAPI)、Electron桌面端与React前端的调试方法,涵盖日志分析、IPC通信、异常处理、性能优化及常见故障排查,助力高效定位与解决运行时问题。(239字)
119 10
|
20天前
阿里放大招!HappyHorse上架百炼,视频创作“躺赢”指南
阿里云百炼新推HappyHorse视频生成模型:支持文生视频、图生视频、多图参考与智能编辑,15秒多镜头成片,精准还原光影细节;横/竖/方屏一键适配,1080P超清输出。省时80%,电商与短视频创作利器!立即体验→
|
24天前
|
存储 NoSQL Java
别再用定时任务扫库了!SpringBoot集成Redis实现订单超时管理
你开了一家网红奶茶店,顾客下单后30分钟不付款,订单就自动取消。你总不能雇个店员盯着每个订单看30分钟吧?Redis的过期键和发布订阅功能,就是那个不知疲倦的“自动取消专员”!
257 3
|
7天前
|
人工智能 架构师 测试技术
AI编程王炸组合:顶级三剑客 OpenSpec 定方向,Superpowers定纪律,Harness定协同
AI编程王炸组合:顶级三剑客 OpenSpec 定方向,Superpowers定纪律,Harness定协同
|
6天前
|
人工智能 开发框架 Java
Spring 接入 DeepSeek:Java 团队的 AI
Spring携手DeepSeek标志Java生态AI化加速。但仅模型接入远不够,企业亟需一体化AI框架。向量空间JBoltAI应运而生:深度兼容Spring,支持DeepSeek等多模型,内置RAG、Agent编排、私有知识库等能力,助力Java团队高效落地企业级AI应用。(239字)
85 5
|
7天前
|
人工智能 自然语言处理 安全
零代码搭建 OpenClaw:本地运行 AI 办公助手完整步骤
OpenClaw(小龙虾)是2026年爆火的开源AI智能体,GitHub星标超28万。本教程提供Windows一键部署包,零代码、全图形化操作,10分钟即可搭建本地运行的数字员工,支持文件整理、浏览器自动化等办公任务,隐私安全、新手友好。(239字)
|
29天前
|
关系型数据库 数据库 开发工具
Navicat Premium 17 数据库管理安装教程:DLL 补丁(64位)
Navicat Premium 17 是功能强大的跨数据库管理与开发工具,提供直观图形界面,支持MySQL、Oracle、SQL Server等。本指南详解含Crack补丁的Windows 64位安装全流程,助您快速部署使用。(239字)
|
13天前
|
人工智能 API iOS开发
阿里云/本地零基础喂饭级部署 Hermes Agent / OpenClaw +配置免费大模型API+集成Obsidian CLI,让AI用你的知识库创作
2026年,个人知识库的价值已从“个人备忘”升级为“AI创作资产”——Obsidian凭借本地Markdown存储、双向链接、标签体系,成为知识管理的首选工具,但长期以来存在一个核心痛点:AI Agent(如OpenClaw)无法高效复用这些精心整理的知识。传统方案需将笔记向量化存入向量数据库,不仅丢失笔记结构与关系,还存在检索不透明、维护复杂等问题。
282 0

热门文章

最新文章