文章目录
- 一、变量
-
- 1、什么是变量?
- 2、申明变量的固定写法
- 3、变量的类型
-
- 值和引用类型的区别
- 无符号和有符号
- 位------表示变量所占用的内存空间的大小
- 范围------表示变量的取值范围
- 取值范围和存储单位的关系
-
- [为什么`byte`的范围是 0 到 255?](#为什么
byte
的范围是 0 到 255?) - [为什么 `sbyte` 的范围是 -128 到 127?](#为什么
sbyte
的范围是 -128 到 127?)
- [为什么`byte`的范围是 0 到 255?](#为什么
- 4、为什么要分这么多不同的变量类型?
- 5、常用的变量类型
- 6、变量命名规则
- 7、float使用注意
- 二、const常量
- 专栏推荐
- 完结
一、变量
1、什么是变量?
变量是计算机程序中的一种存储单元,它用于保存数据,并允许在程序中引用和修改这些数据。你可以把变量想象成"一个用来存储信息的小盒子
"。在编程中,变量就是用来存放数据的地方,你可以在程序中给这个盒子命名,并将它装入不同的数据。之后,你可以随时查看、修改这个数据。
变量的本质就是存储数据的位置
。它就像一张标签纸
,你可以给它取个名字(变量名),然后写上信息(赋值),随时可以查看、修改这个信息(数据)。
比如
假设你有一个盒子
(变量),叫做 age,它的作用就是存储一个年龄。你可以把数字 25 放进去,表示"年龄是 25"。然后,稍后你可以把它改成 30,表示年龄变了。
2、申明变量的固定写法
变量类型 变量名 = 初始值;
csharp
int i = 1;
当然我们也可以选择默认不赋初始值,后面再赋值,像这样
csharp
int i;
i = 1;
一次性定义多个变量也可以简写
csharp
int a;
int b;
//简写
int a, b;
3、变量的类型
C# 中的变量类型可以分为 值类型
和 引用类型
两大类。
值类型
变量类型 | 描述 | 范围 |
---|---|---|
byte | 无符号8位整数 | 0 到 255 |
sbyte | 有符号8位整数 | -128 到 127 |
short | 有符号16位整数 | -32,768 到 32,767 |
ushort | 无符号16位整数 | 0 到 65,535 |
int | 有符号32位整数 | -2,147,483,648 到 2,147,483,647 |
uint | 无符号32位整数 | 0 到 4,294,967,295 |
long | 有符号64位整数 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
ulong | 无符号64位整数 | 0 到 18,446,744,073,709,551,615 |
float | 32 位单精度浮点数 | ±1.5 × 10^−45 到 ±3.4 × 10^38(精度约7位有效数字) |
double | 64 位双精度浮点数 | ±5.0 × 10^−324 到 ±1.7 × 10^308(精度约15--16位有效数字) |
decimal | 128 位高精度小数 | ±1.0 × 10^−28 到 ±7.9 × 10^28(精度约28--29位有效数字) |
bool | 8 位布尔型 | true 或 false |
char | 16 位单一字符型 | Unicode字符(0 到 65,535) |
引用类型
变量类型 | 描述 | 范围 |
---|---|---|
string | 字符串 | 任意长度的字符序列(理论上最多可达到 2GB) |
值和引用类型的区别
这个内容比较复杂,我单独在下篇文章说明
无符号和有符号
无符号
表示能存储一定范围正数
包括0的变量类型有符号
表示能存储一定范围正负数
包括0的变量类型
位------表示变量所占用的内存空间的大小
位
就是指定之前说的计算机中最小的数据存储单位------位(Bit),是指每种数据类型所占用的内存空间的大小。
注意:每种数据类型所占用的内存空间的大小是由 声明时
就已经决定的,与 赋值时的值的大小
无关。
例如
csharp
int smallNumber = 1;
int largeNumber = 10000;
在这两个例子中,smallNumber和largeNumber都是int类型的变量,它们分别存储了1和10000这两个值。但无论这两个变量的值是多少,它们在内存中都会各自占用4个字节(32位)的空间。
你可能会问为什么不根据数值大小动态分配空间?
如果你考虑过根据数值大小动态分配空间,这确实在某些情况下可以节省内存。然而,这样做会增加内存管理的复杂度,并可能降低程序的性能。固定大小的数据类型使得内存分配、读取和写入操作更加高效和简单。
范围------表示变量的取值范围
范围
就是变量的取值范围,超出会报错
比如我定义一个byte类型变量,编辑器会报错
因为前面说了byte取值范围是0 到 255
取值范围和存储单位的关系
为什么byte
的范围是 0 到 255?
- 8位意味着它有 8 个二进制位(即 8 个数字),每个二进制位只能是 0 或 1。
- 对于无符号整数,所有 8 位的组合都代表一个非负整数。因此,所有可能的二进制数值从 00000000 到 11111111 之间。
计算所有组合的范围:
- 最小值:00000000(二进制)= 0(十进制)
- 最大值:11111111(二进制)= 255(十进制)
所以,byte 类型的范围是从 0 到 255,包括这两个值。
为什么 sbyte
的范围是 -128 到 127?
- 8位 表示它有 8 个二进制位,这意味着总共有 256 种可能的数值组合。
- 由于 sbyte 是 有符号 类型,表示正负数需要用其中的一位来表示符号位(即正负号)。通常,符号位在最高位(最左边的位),其中:
- 0 表示正数(或零)
- 1 表示负数
计算 sbyte 的范围:
- 最小值:由于最高位是符号位,最小值是 10000000(二进制),即 -128(十进制)。
- 最大值:最大的正数是 01111111(二进制),即 127(十进制)。
因此,sbyte 类型的取值范围是 从 -128 到 127。
4、为什么要分这么多不同的变量类型?
C# 中不同类型的变量帮助程序在性能、类型安全、功能实现、可读性和可维护性等方面达到最佳平衡。合理选择数据类型不仅能提高程序的效率,还能让代码更具可读性,减少错误。因此,虽然 C# 中的类型众多,它们的存在是为了应对不同的编程需求,提供更加灵活、安全和高效的编程体验。
5、常用的变量类型
前面看到这么多变量类型要记,但是不用害怕,我们经常用的其实只有:
值类型:int
float
bool
引用类型:string
其他的基本都用不到,了解就行了
6、变量命名规则
- 不能重名
- 不能以数字开头
- 不能使用程序关键字命名
- 不能有特殊符号(下划线除外)
变量的命名其实是支持中文汉字的,比如
csharp
int 整数 = 100;
但是非常不建议
的命名规则用汉字命名,有人喜欢用拼音其实我也不是很建议。虽然在特定的个人项目或局部环境中,使用汉字作为标识符可能短期内看起来更方便,但从长期来看,它带来的兼容性问题、可读性差、团队协作困难等问题,通常远远超过其带来的好处。因此,建议
始终使用有意义的英语命名
,遵循编程语言的命名规范,以确保代码的跨平台兼容性、可读性和可维护性。
7、float使用注意
C#小数默认是使用Double类型,所以直接赋值会报错,比如:
所以记得后面需要加上f才是float 类型
csharp
float f = 10.1f;
当然不是小数就可以不加f,但是为了统一规范,最好我们所有的float 类型变量赋值后面都加上f
csharp
float f1 = 0;
float f2 = -1;
float f3 = 1;
float f4 = 0f;
float f5 = -1f;
float f6 = 1f;
二、const常量
1、什么是常量?
在 C# 中,常量(const)是一个值不可更改的变量。也就是说,一旦你为常量赋了初始值,这个值就不能再修改了。常量通常用于保存那些在程序运行时永远不变的值,比如数学常数(例如圆周率 π)或者配置参数。
2、常量的定义
在 C# 中,你可以通过关键字 const 来定义常量。例如:
csharp
const int MaxScore = 100;
const double Pi = 3.14159;
const string WelcomeMessage = "向宇的客栈";
在这些示例中:
- MaxScore 是一个整数常量,值为 100。
- Pi 是一个浮动常量,值为 3.14159。
- WelcomeMessage 是一个字符串常量,值为 "向宇的客栈"。
其实可以简单的理解为在变量前面加一个const
关键字就是常量了
3、常量的特性
-
不可修改:常量的值一旦赋值,就不能再更改。如果你尝试修改常量的值,编译器会报错。例如:
-
必须初始化:在定义常量时,你必须立即为其赋一个初始值。常量在声明时就要赋值,否则编译器会报错。例如:
-
只能是编译时常量:常量的值必须在编译时就已知,并且无法在程序运行时计算得出。例如:
csharpconst int x = 5; const int y = x + 10; // 可以,因为 5 和 10 在编译时已知
但是,下面这种是不允许的:
csharpint z = 5; const int y = z + 10; // 错误:常量值必须是编译时常量
-
性能优化
因为常量的值在编译时已确定,所以在运行时,C# 编译器会直接将常量值替换进代码中(通常是内联)。这有助于提升性能,尤其是当常量频繁使用时。
专栏推荐
地址 |
---|
【从零开始入门unity游戏开发之------C#篇】 |
【从零开始入门unity游戏开发之------unity篇】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架开发】 |
完结
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
好了,我是向宇
,https://xiangyu.blog.csdn.net
一位在小公司默默奋斗的开发者,闲暇之余,边学习边记录分享,站在巨人的肩膀上,通过学习前辈们的经验总是会给我很多帮助和启发!如果你遇到任何问题,也欢迎你评论私信或者加群找我, 虽然有些问题我也不一定会,但是我会查阅各方资料,争取给出最好的建议,希望可以帮助更多想学编程的人,共勉~