C#基础入门之数据类型

简介: C#基础入门之数据类型

一、值类型和引用类型

       在C#中数据类型总共可以分为两类,分别是值类型和引用类型;

值类型:表示复制一个当前变量传给方法,当你在这个方法中改变这个变量的值时,最初生命的变量的值不会变。

引用类型:表示你操作的数据是同一个,也就是说当你传一个参数给另一个方法时,你在另一个方法中改变这个变量的值,那么调用这个方法时传入的变量的值也将改变。

  • 值类型变量声明后,不管是否已经赋值,编译器为其分配内存。
  • 引用类型当声明一个类时,只在栈中分配一小片内存用于容纳一个地址,而此时并没有为其分配堆上的内存空间。当使用 new 创建一个类的实例时,分配堆上的空间,并把堆上空间的地址保存到栈上分配的小片空间中。
  • 值类型的实例通常是在线程栈上分配的(静态分配),但是在某些情形下可以存储在堆中。
  • 引用类型的对象总是在进程堆中分配(动态分配)。

  值类型中包括: 整型 、浮点型 、字符型 、布尔型 、枚举型 、结构型

  引用类型包括: 类 、接口 、数组 、委托 、字符串

在这些数据类型中最具争议的是string字符串类型,先说结论:

string字符串类型是引用类型!!!

string a1 = "like";
            string a2 = a1;
            a1 = "love";
            Console.WriteLine("a1是:" + a1);
            Console.WriteLine("a2是:" + a2);

这段代码中a1改变后,a2和a1应该保持一致,最后输出结果应该都为“love”,但结果如上图所示,并不一样。原因是a1在定义后,在堆中开辟了一个内存地址存储“like”,a2=a1该过程将“like”的地址传递给了a2,此时a2的值为"like"的地址,a1=“love”改变后,又在堆中开辟了新的地址,a2的值不受影响。

具体参考下文:

(13条消息) 学习笔记-String为值类型还是引用类型_string是引用类型吗_小小菜鸟cs的博客-CSDN博客

二、数据类型的大小

bool -> System.Boolean (布尔型,其值为 true 或者 false,占 1 字节)

byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)

sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)

char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)

short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)

ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)

uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)

int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)

float -> System.Single (单精度浮点型,占 4 个字节)

ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)

long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)

double -> System.Double (双精度浮点型,占8 个字节)

1. 位(bit)

来自英文 bit,音译为“比特”,表示二进制位。位是计算机内部数据储存的最小单位,11010100是一个 8 位二进制数。一个二进制位只可以表示 0 和 1 两种状态;两个二进制位可以表示 00、01、10、11 四种状态;三位二进制数可表示八种状态……。

2. 字节(byte)

字节来自英文 Byte,音译为“拜特”,习惯上用大写的“B”表示。

字节是计算机中数据处理的基本单位。计算机中以字节为单位存储和解释信息,规定一个字节由八个二进制位构成,即 1 个字节等于 8 个比特(1Byte=8bit)。八位二进制数最小为 00000000,最大为 11111111;通常 1 个字节可以存入一个 ASCII 码,2 个字节可以存放一个汉字国标码。

3. 字

计算机进行数据处理时,一次存取、加工和传送的数据长度称为字(word)。一个字通常由一个或多个(一般是字节的整数位)字节构成。例如 286 微机的字由 2 个字节组成,它的字长为 16;486 微机的字由 4 个字节组成,它的字长为 32 位。

总的而言:位(bit)是计算机最小的单位,一个位是0或1,一个字节(byte)等于八个位,代表范围是(0到2的八次方-1),一个字等于两个字节。

 

相关文章
|
存储 C# 索引
C# 一分钟浅谈:变量与数据类型简介
【9月更文挑战第1天】在 C# 编程中,了解变量与数据类型至关重要。本文详细介绍了 C# 中的值类型(如整数、浮点数、布尔值等)和引用类型(如类、接口、数组、字符串)。通过示例代码展示了变量的声明与使用方法,并针对数据类型转换错误、变量未初始化及数值溢出等常见问题提供了解决方案。正确选择数据类型不仅能提升程序性能,还可避免潜在错误,有助于编写高质量代码。
242 48
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
484 7
|
C#
C#入门
C#入门
96 0
|
12月前
|
开发框架 .NET API
以C#一分钟浅谈:GraphQL 数据类型与查询
本文从C#开发者的角度介绍了GraphQL的基本概念、核心组件及其实现方法。GraphQL由Facebook开发,允许客户端精确请求所需数据,提高应用性能。文章详细讲解了如何在C#中使用`GraphQL.NET`库创建Schema、配置ASP.NET Core,并讨论了GraphQL的数据类型及常见问题与解决方案。通过本文,C#开发者可以更好地理解并应用GraphQL,构建高效、灵活的API。
277 64
|
11月前
|
开发框架 .NET 测试技术
C# 一分钟浅谈:GraphQL 数据类型与查询
本文介绍了GraphQL的基本概念、数据类型及查询方法,重点从C#角度探讨了GraphQL的应用。通过Hot Chocolate库的实例,展示了如何在ASP.NET Core中实现GraphQL API,包括安装、定义Schema、配置及运行项目。文中还讨论了常见问题与解决方案,旨在帮助开发者更好地理解和使用GraphQL。
165 2
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
453 8
|
12月前
|
程序员 C# 图形学
全面的C#/.NET自学入门指南
全面的C#/.NET自学入门指南
263 0
|
设计模式 C# 开发者
C#设计模式入门实战教程
C#设计模式入门实战教程
139 3
|
安全 数据库连接 API
C#一分钟浅谈:多线程编程入门
在现代软件开发中,多线程编程对于提升程序响应性和执行效率至关重要。本文从基础概念入手,详细探讨了C#中的多线程技术,包括线程创建、管理及常见问题的解决策略,如线程安全、死锁和资源泄露等,并通过具体示例帮助读者理解和应用这些技巧,适合初学者快速掌握C#多线程编程。
210 0
|
开发框架 .NET Java
C#/.NET/.NET Core自学入门指南
C#/.NET/.NET Core自学入门指南
261 0