变量
一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。
1.1变量的声明
[访问修饰符] 数据类型 变量名=初始化默认值
1.2变量的初始化
变量通过在等号后跟一个常量表达式进行初始化(赋值)
为什么要进行变量初始化
变量初始化是C#强调安全性的另一种方式。
简单的说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引 用该变量。大多数现代编译器把未初始化标记为警告,但C#编译器把它当作错误来看待。这样可以防止我们无意中从其他程序遗留下来的内存中获取垃圾值。
1.3如何确保变量初始化
-
变量直接定义在类中或者结构中,如果没有显式初始化,那么在创建变量的时候会有默认值--全局变量
-
方法、事件内的变量必须在代码中显式初始化--局部变量
之后才能在语句中使用它们的值。此时初始化不是声明该变量时进行的,但编译器会通过方法检查所有可能的路径,如果检测到局部变量在初始化之前就使用了他的值,直接报错。
常用数据类型的默认值
数据类型 | 默认值 |
---|---|
(11种)数字类型 | 0/0.0/0.0f/0.0m |
字符串类型 | "" |
布尔型 | false |
字符型 | 一个空格字符 |
对象型 | null |
1.4变量的作用域
变量的作用域是可以访问该变量的代码区域。一般情况下,确定作用域遵循以下规则:
-
全局变量:只要类在某个作用域内,其成员变量也在该作用域内
-
局部变量:存在于表示声明该变量的块级语句或方法结束的大括号之前的作用域内
-
局部变量:在for、while或类似语句中声明的局部变量存在于该循环语句内
变量的作用域永远局限于其直接所在的大括号之内
1.5变量的作用域冲突
在同一个区域内有至少两个相同的变量都能起到作用,这时会对程序造成冲突问题
-
局部变量,同一局部内有至少两个变量的变量名相同,那么程序编译会报错。
-
全局变量,在同一个类里面有至少两个全局变量的变量名相同,那么程序编译会报错
-
一个全局变量和多个不同局部的局部变量的变量名相同,那么变量遵循就近原则
常量
常量是固定值,程序执行期间不会改变。常量可以是任何基本数据类型,比如整数常量、浮点常量、字符常量或者字符串常量,还有枚举常量
常量可以被当作常规的变量,只是它们的值在定义后不能被修改
2.1常量的声明
常量是使用 const 关键字来定义的 。定义一个常量的语法如下:
const 数据类型 变量名=常量值;
-
常量声明之后不允许进行改变其值
-
常量命名全部使用大写字母/帕斯卡命名
2.2整数常量
-
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,没有前缀则表示十进制
-
整数常量也可以有后缀,可以是U和L的组合,其中,U和L分别表示 unsigned 和long。后缀可以是大写或者小写,多个后缀以任意顺序进行组合
一些整数常量的实例: 212 /* 合 法 */ 215u /* 合 法 */ 0xFeeL /* 合 法 */ 078 /* 非法:8 不是一个八进制数字 */ 032UU /* 非法:不能重复后缀 */ 以下是各种类型的整数常量的实例 85 /* 十进制 */ 0213 /* 八进制 */ 0x4b /* 十六进制 */ 30 /* int */ 30u /* 无符号 int */ 30l /* long */ 30ul /* 无符号 long */
2.3浮点常量
-
一个浮点常量是由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量
-
使用小数形式表示时,必须包含小数点、指数或同时包含两者。使用指数形式表示时,必须包含整数部分、小数部分或 同时包含两者。有符号的指数是用 e 或 E 表示的
3.14159 /* 合 法 */ 314159E-5L /* 合 法 */ 510E /* 非法:不完全指数 */ 210f /* 非法:没有小数或指数 */ .e55 /* 非法:缺少整数或小数 */
2.4字符常量
-
字符常量是括在单引号里,例如,'x',且可存储在一个简单的字符类型变量中
-
一个字符常量可以是一个普通字符(例如 'x')、一个转义序列(例如 '\t')或者一个通用字符UNICODE字符(例如'\u02C0')
转义字符
在 C# 中有一些特定的字符,当它们的前面带有反斜杠时有特殊的意义,可用于表示换行符(\n)或制表符 tab(\t)。在这里,列出一些转义序列码
转义序列 | 含义 |
---|---|
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | Alert 或 bell |
\b | 退格键(Backspace) |
\f | 换页符(Form feed) |
\n | 换行符(Newline) |
\r | 回车 |
\t | 水平制表符 tab |
\v | 垂直制表符 tab |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
2.5字符串常量
字符串类型赋值:双引号中写任何内容都直接输出,但是在双引号中如果遇到"\"另做考虑,在计算机数据类型为字符串时,遇到"\"则默认会将其与之后紧跟着的字符当做转义字符处理,如何能组成转义字符则处理该字符串时这个字符当成转义字符的功能处理,如果不能组成转义字符则编译报错
-
字符串常量是括在双引号"" 里,或者是括在 @"" 里。字符串常量包含的字符与字符常量相似,可以是:普通字符、转义序列和通用字符
-
使用字符串常量时,可以把一个很长的行拆成多个行,可以使用空格分隔各个部分
如何消除字符串中的不必要的转义序列
-
在字符串中遇到"\"在之前再加一个"\"
-
在字符串开头的双引号之前加"@"
取决于实际的应用场合,两者不能混合使用,原因是只要有“@”,所有的“\”失效
断点
计算机阅读程序员所书写的代码,基本上都是按照针对代码文件,从上往下逐行逐步执行。
断点的主要作用监视计算机逐步执行代码的过程,所以断点检测主要是用作用程序开发的逻辑梳理
3.1如何添加断点
-
在需要开始监测的代码行之前的灰色区域鼠标单击
-
选中需要开始监测的代码行按F9
3.2如何使用断点
首先必须确保代码能够执行到要检测的这行代码,然后启动程序,操作程序使计算机阅读到此处
这种情况下才证明计算机已经进入断点状态,计算机阅读到int i=1这个步骤
-
可以按
按钮,或者选择按:F11(逐步骤)、F10(逐过程)执行
-
可以针对断点控制区域内的变量、表达式进行选中右键添加监视
-
如果循环中确保这次断点监视完成,希望代码正常执行,选择继续按钮