C# 数据类型详解

c#基础知识 由于readonly所定义的常量相当于类的成员,因此使用const来定义常量所受到的类型限制,在使用readonly去定义的时候全部消失,即可以用readonly去定义任何类型的常量。在程序中使用DLL类库某个类的静态常量时,如果在类库中修改静态常量的值,其它接口没有发生变化,一般来说,程序调用端是不需要重新编译,直接执行就可以调用新的类库。2.用const定义的常量,对于所有类对象而言都是一样的,因此需要像访问静态成员那样去访问const定义的常量,而用对象的成员方式去访问会出变异错误。 阅读详情

在 C# 中,数据类型是定义变量所能存储数据类型的方式。C# 中的数据类型大致可以分为三类:值类型(Value Types)、引用类型(Reference Types) 和 指针类型(Pointer Types)。本文将详细介绍这三种类型的特点及使用。

1. 值类型(Value Types)

值类型直接包含数据的值,它们存储在栈(Stack)上。当你将值类型的变量赋值给另一个变量时,实际是将数据的副本传递给了另一个变量。C# 中的所有数值类型(如整数、浮点数等)都属于值类型。

常见的值类型:
类型描述范围默认值
bool布尔类型true 或 falsefalse
byte8 位无符号整数0 到 2550
char16 位 Unicode 字符U+0000 到 U+FFFF'\0'
decimal高精度十进制数(128 位)(-7.9 x 10^28 到 7.9 x 10^28)/100 到 280.0M
double64 位双精度浮点数(+/-)5.0 x 10^-324 到 (+/-)1.7 x 10^3080.0D
float32 位单精度浮点数-3.4 x 10^38 到 +3.4 x 10^380.0F
int32 位有符号整数-2,147,483,648 到 2,147,483,6470
long64 位有符号整数-9,223,372,036,854,775,808 到 9,223,372,036,854,775,8070L
sbyte8 位有符号整数-128 到 1270
short16 位有符号整数-32,768 到 32,7670
uint32 位无符号整数0 到 4,294,967,2950
ulong64 位无符号整数0 到 18,446,744,073,709,551,6150
ushort16 位无符号整数0 到 65,5350

你可以使用 sizeof 运算符来获取特定类型在内存中的大小:

using System;

namespace DataTypeExample
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Size of int: {0} bytes", sizeof(int));
        }
    }
}

输出:

Size of int: 4 bytes

2. 引用类型(Reference Types)

引用类型与值类型不同,它们不直接存储数据,而是存储数据的引用(即内存地址)。当一个引用类型的变量赋值给另一个变量时,它们指向同一个内存位置。因此,修改一个变量的值会影响到另一个变量。

常见的引用类型:
类型描述示例
object所有数据类型的基类object obj = 100;
dynamic动态类型,类型检查在运行时发生dynamic dynVar = 10; dynVar = "Hello, World!";
string字符串类型(引号或逐字字符串)string str = "C# is awesome!";
示例:对象类型
object obj = 100;  // 这里是值类型装箱(Boxing)
Console.WriteLine(obj);  // 输出: 100
示例:动态类型
dynamic dynVar = 10;
Console.WriteLine(dynVar);  // 输出: 10
dynVar = "Hello, World!";
Console.WriteLine(dynVar);  // 输出: Hello, World!
示例:字符串类型
string str = "C# is great!";
Console.WriteLine(str);  // 输出: C# is great!

// 逐字字符串
string filePath = @"C:\Windows\System32";
Console.WriteLine(filePath);  // 输出: C:\Windows\System32

3. 值类型与引用类型的比较

为了更加直观地展示值类型和引用类型之间的区别,我们可以通过以下表格来对比:

特性值类型(Value Types)引用类型(Reference Types)
存储位置栈(Stack)堆(Heap)
赋值行为直接复制值,赋值后的变量互不影响赋值时传递内存地址,赋值后的变量共享相同的数据
默认值每个值类型都有一个默认值,如 0、false 或 '\0'默认值为 null
例子int、float、char、bool 等string、object、dynamic、class 等
内存管理自动释放,生命周期由栈的作用域控制必须通过垃圾回收机制进行内存管理
传递方式传递数据副本传递引用,即内存地址
速度相对较快(因为存储在栈中,内存访问速度较快)相对较慢(由于引用类型存储在堆中,访问速度较慢)

4. 指针类型(Pointer Types)

指针类型在 C# 中并不常见,通常只有在启用“不安全代码”(Unsafe Code)时才能使用。指针变量存储其他类型变量的内存地址,类似于 C 或 C++ 中的指针。指针类型常用于需要直接操作内存的低级编程。

unsafe
{
    int num = 10;
    int* p = #  // 获取变量 num 的内存地址
    Console.WriteLine((int)p);  // 输出 num 的内存地址
}

需要注意的是,使用指针时需要在项目中启用“不安全代码”选项,并且代码中的指针类型必须使用 unsafe 关键字。

总结

C# 提供了多种数据类型,满足不同编程需求。值类型适合存储简单数据,引用类型则适合更复杂的数据结构,而指针类型则为高级开发提供了内存控制的能力。在编程过程中,选择合适的数据类型能够有效地提高程序的性能与可维护性。

希望本文能够帮助你更好地理解 C# 中的数据类型。如果你有任何问题或进一步的讨论,欢迎在评论区留言。

C#数据类型与类型转换详解 数据类型是编程语言的基础概念,C#作为强类型语言,其类型系统分为值类型和引用类型两大类。值类型直接存储数据,包括整数、浮点数等基础类型;引用类型存储数据引用,如类和接口。类型转换是数据处理的核心操作,C#支持隐式转换(自动完成)和显式转换(需强制声明)。理解类型转换原理对避免数据丢失和运行时异常至关重要,特别是在数值处理和多态场景中。C#还提供了is/as运算符、Convert类等安全转换机制,结合装箱拆箱、泛型等特性,开发者可以构建健壮的类型处理逻辑。掌握这些知识对提升代码性能和可维护性有显著帮助。 阅读详情

相关推荐

C#基础:变量与数据类型详解

本文深入探讨了C#编程语言中变量和数据类型的使用,包括变量的声明、赋值、作用域、生命周期以及数据类型的定义和选择。通过理解这些基本概念,读者可以更好地掌握C#编程,并在实际应用中有效地存储和操作数据。

weixin_42584758的博客 286

C#数据类型

C# 语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型。不同编程语言的数据类型都有所不同,下面让我们来了解一下C#的数据类型。

懒羊羊我小弟的博客 8985

C# 数据类型转换与程序操作详解

本文深入解析了C#中数据类型转换的各种情况和规则,包括浮点数、十进制数与整数变量间的转换以及转换过程中可能出现的精度丢失问题。同时,介绍了C#程序中如何正确显示信息以及如何操作存储在变量中的数据,包括基本的输入输出方法和变量操作。

weixin_42360846的博客 385

【C#基础】C# 数据类型总结

编程语言 C# 数据类型的介绍 。

好学若饥,谦卑若愚。 6913

07. 基础实战篇 - STP的基本配置

STP(生成数协议)是一个用于在局域网中消除环路的协议,他的标准是IEEE802.1d。STP通过强制使部分冗余链路处于阻塞状态,其它链路处于转发状态,将环形网络结构修剪成无环路的树形网络结构。可实现消除环路,当处于转发状态的链路不可用时,STP重新配置网络,并激活合适的备用链路状态,恢复网络连通性。

weixin_39868387的博客 7226

STM32F103C8T6全桥逆变电路PWM波生成(基于HAL库)

全桥逆变电路需要两组开关管相互协同工作,故需要两路PWM控制信号,为了防止电源短路,需要保证同一桥臂的上下两个开关管不会同时导通,故两路PWM在相位上需要相差180°;为了保证高频变压器不会磁饱和,使正负半周PWM占空比相同。但是传统的互补输出达不到调节占空比调节输出电压的效果。......

weixin_45042735的博客 6025

2021-08-28

C#的基本数据类型 数据类型主要用于指明变量和常量存储值的类型,C#语言是一种强类型语言,要求每个变量都必须指定数据类型。 C#语言的数据类型分为值类型和引用类型。 值类型包括整型、浮点型、字符型、布尔型、枚举型等;引用类型包括类、接口、数组、委托、字符串等。 整型类型 所谓整型就是存储整数的类型,按照存储值的范围不同,C#语言将整型分成了byte类型、int类型、short类型、long类型等,并分别定义了有符号数和无符号数。 整型类型的分类、占用内存大小以及最大可表示范围如下表所示: 类型 取值

weixin_57727836的博客 463

手把手教你为STM32设备生成自定义MAC地址(基于芯片ID的5种算法对比)

本文详细介绍了基于STM32芯片ID生成自定义MAC地址的5种算法,包括直接截取、异或折叠、CRC32哈希、自定义混合运算及SHA-256摘要。通过对比分析各算法的计算复杂度、唯一性及适用场景,帮助嵌入式开发者根据项目规模与资源,选择最合适的方案,确保设备MAC地址的唯一性与合规性。

weixin_29170327的博客 528

C#基本数据类型

C#一般分为15种数据类型,这15种数据类型分为两类,一种是值类型,一种是引用类型,值类型有13个而引用类型有两个,分别是string和object 整数类型:整数类型的变量的值为整数,C#中有九种整数类型:短字节型(sbyte)、字节型(byte)、短整型(short)、无符号短整 型(ushort)、整型(int)、无符号整型(uint)、长整型(long)、无符号长整型(ulong)。 浮点型: 如果在代码没有对某个非整数值(如12.3)硬编码(显示声明),则编译器一般假定该变量 类型是doub.

A_tuohai的博客 8299

ComfyUI实战:AnimateDiff与ControlNet结合,打造无缝风格化视频转绘

本文详细介绍了如何利用ComfyUI平台,结合AnimateDiff与ControlNet插件,实现高质量的视频风格化转绘。通过搭建节点工作流、调整关键参数,有效解决画面闪烁与失真问题,并分享了进阶玩法与常见问题解决方案,帮助用户轻松打造流畅、风格统一的动态视觉效果。

weixin_29039773的博客 341

合成孔径雷达Chirp Scaling(CS)算法MATLAB仿真实现

本人也是初学《合成孔径雷达成像算法与实现》,在GitHub上下载的关于CS算法的代码,仔细读了读,发现中间有一些不合理之处,动手改了一改,重新写了一个代码供初学者学习,有什么问题留言即可。 非常感谢源代码的作者,虽然中间有少许不正确的地方,但是对我理解cs算法的帮助非常大,非常感谢!!! 代码中提到的(4.31)这种均是在《合成孔径雷达成像算法与实现》中的公式 以下是MATLAB的仿真程序,直接复...

weixin_41700188的博客 7854

C#基本数据类型详解

C#基本数据类型包括整数类型、浮点数类型、布尔类型和字符数据类型。废话不多说,下面分条直接上干货。

lucgh的博客 3024

【笔记篇】Davinci Configurator BswM模块

AUTOSAR BSWM模块配置介绍

weixin_47571898的博客 1534

C# 数据类型详解:掌握数据类型及操作为高效编码奠定基础

本文将带你深入了解C#中各种数据类型的特点、用途和最佳实践,让你不仅能熟练运用基本类型,还能掌握如何在实际项目中做出最合适的选择。

ztK63LrD的博客 1697

uniapp [全端兼容] - 实现全景图Vr 720°全景效果查看预览功能,3D全景图流畅不卡顿渲染+手势拖拽+悬浮工具按钮,uniAPP实现vr看720度全景效果示例代码(H5小程序APP全兼容)

uniapp显示720度全景图,720°全景图显示,在h5中展示720°全景图,浏览全景图,基于uniApp实现vr全景预览,加载全景图,uni-app全景预览插件,UNI-APP实现3D全景图,实现720°全景图展示,uniapp全景视频播放,uniapp项目实现vr720度全景图片预览,在网页上展示760全景图片和视频,全景图场景切换,UNIAPP全景VR图,uniapp加载720全景图_uniapp怎么加载vr图片,uniapp实现vr全景看房,uni-app实现全景效果,加载很慢卡怎么办,实现全景预

🏆 前端领域优质创作者 1万+

【嵌入式Linux驱动开发】二十四、Linux I2C 驱动上手尝试

  人的前程关于眼界、关乎格局。   志之所趋,无远弗届,穷山复海不能限也;   志之所向,无坚不入,锐兵精甲不能御也。 一、I2C驱动框架简介   Linux内核将 I2C 驱动分为两部分: ①、 I2C 总线驱动, I2C 总线驱动就是 SOC 的 I2C 控制器驱动,也叫做 I2C 适配器驱动。 ②、 I2C 设备驱动, I2C 设备驱动就是针对具体的 I2C 设备而编写的驱动。 1....

悟已往之不谏 知来者之可追 1070

C# 之基础语法与数据类型详解

本文详细介绍了C#编程语言的基础语法与核心数据类型。主要内容包括:1) C#程序基本结构,如Hello World示例和代码特点;2)变量与常量的声明和使用;3)值类型和引用类型的分类及示例;4)算术、关系、逻辑和赋值运算符;5)隐式和显式类型转换方法;6)字符串的基本操作和常用方法;7)一维、多维和交错数组的使用。这些基础知识为学习C#面向对象编程和高级特性奠定了基础。文章采用代码示例与表格相结合的方式,清晰展示了各种语法规则和数据类型的使用方法。

weixin_45590420的博客 522

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C#数据类型详解

好长时间没有更新了,从现在开始保持更新。。。

PigeonGGB的共同成长空间 240

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# 之常见的数据类型和容器集合的使用和特点全面详解

C# 中的集合类提供了丰富的选择,可以帮助你高效地存储、查找、修改数据。根据不同的需求选择合适的集合类型至关重要。例如,List适合频繁按索引访问的场景,适用于需要通过键值对查找的场景,而HashSet则非常适合去重操作。在并发编程中,使用或可以简化线程安全的问题。此外,LINQ 提供了强大的查询能力,可以让你以更加声明式的方式操作集合,提升代码的简洁性和可读性。C# 提供了丰富的集合类和容器类型,涵盖了从简单的列表、字典、集合到更高级的并发集合和不可变集合等多种需求。

weixin_45590420的博客 1747

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C# 深入浅出:详解 EasyModbus 各种数据类型的处理逻辑

EasyModbus实现了Modbus的底层协议,并为我们封装好了一系列方法。里面的保持寄存器的存取,是通过中间变量“位数组”来处理的,写入时先把内容转为“位数组”,然后写入;读取时先从PLC读取指定位置和数量的内容到位数组,位的数量跟数据类型相关。然后将位数组转位最终结果。EasyModbus为我们已经构建好了这些基本转换方法,我们只要使用就行了。中文字符串处理需要对原有代码进行改良,正文内容里已经给出了改良的细节代码,直接使用即可。

usabcd2的博客 2676

C# 数据类型详解以及变量、对象与内存

1、什么是类型? 类型又称为数据类型(Data Type),数据类型在数据结构中的定义是一个值的集合以及定义在这个值集上的一组操作。 可以简单理解为数据在内存中存储的“型号”;小内存容纳大尺寸数据会丢失精准度,发生错误;而大内存容纳小尺寸数据会导致浪费。 还应注意编成语言的数据类型与数学中的数据类型不完全相同,例如数学中 3/4=0.75 而在C# 语言中 3 /4 =0。 不同的编程语言对数据类型的约束程度不一样,所以有强类型编程语言和弱类型编程语言的区分。 变量是用来存储值得所在处,它们有名字和数据类型

chinaherolts2008的博客 542

【C#基础详解】(二)数据类型和变量

学习C#数据类型的分类和变量常量的概念。

伯恩的博客 381

ST语言与C#语言数据类型对比详解

/ 使用Convert类。// 抛出OverflowException。s2: WSTRING(50) := "世界";// Unicode字符串。

like_sunshine978的博客 1094

C# 零基础入门篇(1.基本数据类型详解)

无符号字节 | `byte` | 1 字节 | 0 到 255 | 0 | `byte b = 200;| 布尔值 | `bool` | 1 字节 | `true` 或 `false` | false | `bool flag = true;| 典型类型 | `int`, `double`, `bool`, `char` | `string`, `object`, 数组 |

think__deeply的博客 912
上一篇: C# 基本语法详解:从面向对象到 C# 9 顶级语句一文入门
下一篇: 阿里云 OSS C# SDK RAM如何获取临时访问密钥
bugcome_com
博客等级 码龄3年 32粉丝 131原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bugcome_com

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值