C#入门学习笔记
写在最前
- 一直以来都想自己做一款游戏,但是对于非计算机出身的我而言,编程就是一座不能不跨越的大山。大学期间有过Python的粗浅学习了解,但课程上完之后便很快遗忘了。因此这次学习C#,强制自己写学习笔记,不仅是方便自己以后遗忘时可以随时翻阅复习,更是为自己定下一个明确的目标,以目标驱动自己。
- 这篇笔记对应的是唐老狮的C#四部曲──C#入门课程地址
一、第一个应用程序
注释
- 两杠注释
// 注释 // - 星号注释
/* 注释多行 */ - 三杠注释
/// 注释命名空间、类、函数 ///
代码位置
1 | //命名空间,面向对象相关(工具包) |
控制台打印
1 | //控制台打印,光标换行 |
二、变量
折叠代码
1 |
|
如何声明变量
- 变量声明语法
1 | //不能无中生有,必须先声明,最好声明时就初始化。 |
-
变量类型
变量类型 范围 字节 sbyte -128 ~ 127 1 int -21亿 ~ 21亿 4 short -32768 ~ 32767 2 long -9百万兆 ~ 9百万兆 8 byte 0 ~ 255 1 uint 0 ~ 42亿多 4 ushort 0 ~ 65535 2 ulong 0 ~ 18百万兆 8 float 存储7/8位有效数字,四舍五入。后面需加f 4 double 存储15/17位有效数字,四舍五入 8 decimal 存储27/28位有效数字,四舍五入。后面需加m 16 bool true/false 1 char 单个字符,单引号 2 string 多个字符,无上限,双引号 无
变量本质
- 装值的一个容器,本质是占用的内存空间不同。
- 1字节 = 8 位。位本质上是电信号中的开关,用0/1表示。
- sizeof 方法,可以获取变量类型所占的内存空间。e.g.
sizeof(int)
- 2进制转10进制的规则:从右往左看最右边的一位为第0位,如果该位不为0则加上2的n位次方。
- 有符号的变量类型,最左边的一位用来表示符号:0为正数,1为负数。
变量的命名规范
必须遵守的的规则
- 不能重名
- 不能以数字开头
- 不能程序关键字命名
- 不能有特殊符号(下划线除外)
推荐的命名规则
- 驼峰命名法──首字母小写,之后单词首字母大写
- 帕斯卡命名法──所有单词首字母大写
- 常量──通常使用全大写字母,并使用下划线来分隔单词
三、常量
-
常量的声明
const 变量类型 变量名 = 初始值; -
常量的特点
- 必须初始化
- 不能被修改
- 常用于一些常用不变的量
四、转义字符
定义
字符串的一部分,用来表示特殊含义的字符
用法
\字符
一些转义字符
用法 | 含义 |
---|---|
\’ | 单引号 |
\" | 双引号 |
\n | 换行 |
\\ | 单个斜杠 |
\t | 制表符 |
\b | 光标退格 |
\0 | 空字符 |
\a | 警告音 |
取消转义字符
在字符串前面加上@符号,可以让字符串中的转义字符失效。
五、类型转换
隐式转换
不同类型直接自动进行转换;大范围装小范围
-
相同类型
有符号:long > int > short > sbyte
无符号:ulong > uint > ushort > byte
浮点数:double > float (decimal 没办法使用隐式转换装double、float) -
不同类型
- 有符号变量可以装无符号变量,前提是范围一定要是涵盖的。
- 浮点数(包括 decimal )是可以装所有的类型的整数的,太大的数会使用科学计数法。
- char可以隐式转换成int、ushort、long、ulong等。因为char其实是一个无符号的16位的数,范围是0~65535。Unicode
总结:
- 高精度(大范围)装低精度(小范围)
- double → float → 整数(无符号、有符号)→ char
- decimal → 整数(无符号、有符号)→ char
- string 和 bool 不参与隐式转换规则的
显式转换
手动处理,强制转换
-
括号强转
- 变量类型 变量名 = (变量类型)变量;
- 将高精度的类型强制转换为低精度。
- 括号强转可能会出现范围问题造成的异常。
- 浮点数强转成整形时,直接抛弃掉小数点后的小数。
- bool 和 string 是不能通过括号强转的。
-
Parse法
- 变量类型.Parse(“字符串”);
- 字符串必须能够转换成对应类型,并且需要考虑范围能否被包围,否则报错。
- 作用相当于消去字符串两边的双引号。
-
Convert法
- Convert.To目标类型(变量或常量);
- 能更加准确地将各个类型之间进行相互转换。
- 如果将字符串转成其它类型,必须合法合格。
- Convert法将浮点数转成整形时,会四舍五入。
- 可以把布尔类型转换为数值类型
类型 用法 转 sbyte Convert.ToSByte() 转 short Convert.ToInt16() 转 int Convert.ToInt32() 转 long Convert.ToInt64() 转 byte Convert.ToByte() 转 ushort Convert.ToUInt16() 转 uint Convert.ToUInt32() 转 ulong Convert.ToUInt64() 转 float Convert.ToSingle() 转 double Convert.ToDouble() 转 decimal Convert.ToDecimal() 转 bool Convert.ToBoolean() 转 char Convert.ToChar() 转 string Convert.ToString() -
其它类型转 string
- 变量.tostring();
- 当打印的时候,就已经自动调用了其他类型变成了 string 。
六、异常捕获
1 | //必有 |
七、运算符
算数运算符
- 赋值符号
先看右侧,再看左侧,把右侧的值赋给左侧。= - 算数运算符
- +加
- -减
- *乘
- /除:默认的整数是int,如果直接用于除法,会丢失小数点后的小数。可以加上浮点数的特征。e.g. 1f
- %取余
- 算数运算符的优先级
- 乘除取余的优先级高于加减
- 括号改变优先级,优先计算括号内内容。多层括号,从内往外算。
- 复合运算符
- +=
- -=
- *=
- /=
- %=
- 自增减
- i++,i-- 先用再算
- ++i,–i 先算再用
字符串拼接
- 字符串拼接方式1
- 可以通过+号进行字符串的拼接。
- 和其他类型混合运算时,也遵循从左往右,括号优先的顺序。
- 字符串拼接方式2
- string.Format(“待拼接的内容”,内容1,内容2,……);
- 使用占位符代替需要拼接的内容:{数字},0~n,以此往后。
- 控制台打印拼接
- console.WriteLine(“待拼接的内容”,内容1,内容2,……);
- console.Write(“待拼接的内容”,内容1,内容2,……);
条件运算符
- 条件运算符
- 是否大于 >
- 是否小于 <
- 是否等于 ==
- 是否不等于 !=
- 是否大于等于 >=
- 是否小于等于 <=
- 注意事项
1.优先级低于算数运算符
2.不能进行范围比较:1 < a <5
3.数值直接可以使用任意条件运算符比较,而string、bool类型只能同类型间使用 == 和 != 比较。
4.char比较特殊,本质上是转化为数字后进行比较的。Unicode
逻辑运算符
逻辑运算符优先级条件运算符;逻辑非的优先级在其中较高,逻辑与其次,逻辑或最低。
- 逻辑与 &&
有假则假,同真为真 - 逻辑或 ||
有真为真,同假为假 - 逻辑非 !
取反,真变假,假变真 - 逻辑运算符的短路原则
只要&&或者||左边满足了条件,就不会跑剩下的内容了。
位运算符
将值转化为二进制进行计算。
- 位与 &
右对齐,有0则0 - 位或 |
右对齐,有1则1 - 异或 ^
右对齐,相同为0,不同为1 - 位取反 ~
补全这个类型的位数,0变1,1变0 - 左移 < 与右移 >
左移:右侧加几个0
右移:右侧去掉几个数
三目运算符
- bool类型 ? bool类型为真返回内容 : bool类型为假返回内容;
- 返回值必须一致,并且必须使用!
八、条件分支语句
- if语句
1 | //不需要使用分号结尾 |
- switch语句
1 | //语法 |
九、循环语句
- while 语句
1 | while(bool类型的值) |
- do while 语句
1 | //先执行一次再判断 |
- for 语句
1 | for(初始表达式;条件表达式;增量表达式) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 橙菌!