课程目录

  • 第 1 章: 概述
  • 第 2 章: C#入门基础语法知识 1
    • 第 1 节: 基础知识
      • 2-1-1: 程序语言是什么
      • 2-1-2: 程序思维练习题
      • 2-1-3: 开发环境搭建
      • 2-1-4: 程序思维练习题
    • 第 2 节: 第一个应用程序
      • 2-2-1: VS 窗口介绍
      • 2-2-2: 理解写代码这件事
      • 2-2-3: 注释
      • 2-2-4: 程序文件的基础结构
      • 2-2-5: 控制台输入输出语句和学习建议
      • 2-2-6: 输入输出练习题
    • 第 3 节: 变量
      • 2-3-1: 变量知识点
      • 2-3-2: 变量练习题
    • 第 4 节: 变量的本质
      • 2-4-1: 变量的本质知识点
      • 2-4-2: 变量的本质练习题
    • 第 5 节: 变量的命名规范
      • 2-5-1: 变量的命名规范知识点
      • 2-5-2: 变量的命名规范练习题
    • 第 6 节: 常量
      • 2-6-1: 常量知识点
      • 2-6-2: 常量练习题
    • 第 7 节: 转义字符
      • 2-7-1: 转义字符知识点
      • 2-7-2: 转义字符练习题
    • 第 8 节: 类型转换
      • 2-8-1: 隐式转换知识点
      • 2-8-2: 隐式转换练习题
      • 2-8-3: 显示转换知识点
      • 2-8-4: 显示转换练习题
    • 第 9 节: 异常捕获
      • 2-9-1: 异常捕获知识点
      • 2-9-2: 异常捕获练习题
    • 第 10 节: 运算符
      • 2-10-1: 算数运算符知识点
      • 2-10-2: 算数运算符练习题
      • 2-10-3: 字符串拼接知识点
      • 2-10-4: 字符串拼接练习题
      • 2-10-5: 条件运算符知识点
      • 2-10-6: 条件运算符练习题
      • 2-10-7: 逻辑运算符知识点
      • 2-10-8: 逻辑运算符练习题
      • 2-10-9: 位运算符知识点
      • 2-10-10: 位运算符练习题
      • 2-10-11: 三目运算符知识点
      • 2-10-12: 三目运算符练习题
    • 第 11 节: 条件分支语句
      • 2-11-1: if 语句知识点
      • 2-11-2: if 语句练习题 1
      • 2-11-3: if 语句练习题 2
      • 2-11-4: switch 语句知识点
      • 2-11-5: switch 语句练习题
    • 第 12 节: 循环语句
      • 2-12-1: while 循环知识点
      • 2-12-2: while 循环练习题 1
      • 2-12-3: while 循环练习题 2
      • 2-12-4: do while 循环知识点
      • 2-12-5: do while 循环练习题
      • 2-12-6: for 循环知识点
      • 2-12-7: for 循环练习题

第三章: 总结

实践项目目录

  • 第 1 章: 必备知识点补充
    • 1-1: 控制台相关知识点
    • 1-2: 控制台相关练习题
    • 1-3: 随机数知识点
    • 1-4: 随机数练习题
    • 1-5: 项目调试
  • 第 2 章: C#入门实践项目
    • 2-1: 需求分析
    • 2-2: 控制台基础设置
    • 2-3: 多个场景
    • 2-4: 开始场景逻辑实现
    • 2-5: 不变的红墙
    • 2-6: boss 相关
    • 2-7: 主角移动相关
    • 2-8: 主角和 boss 战斗
    • 2-9: 公主相关
    • 2-10: 结束场景逻辑实现
  • 第 3 章: C#入门实践总结

命名规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//变量命名 遵循首字母小写 后面的单词首字母大写
int myName = 12;
int yourName = 13;
string myString = "我的字符串";
//函数和类的命名 循序首字母大写
class MyArray{

}

int MyFunction (){

}

#region
//折叠代码
#endregion

变量类型

1 字节=8 比特=8 位 例:1001 0100

类别 数据类型 位数
无符号 正整数集 ulong 64 位
uint 32 位
ushort 16 位
byte 8 位
有符号 整数集 long 64 位
int 32 位
short 16 位
sbyte 8 位
浮点数 小数 decimal 128 位
double 64 位
float 32 位
特殊字符 字符串 string 无位数限制
char 16 位
bool 8 位

声明常量 变量前加 const 关键字

1
const float PI = 3.14159265f;

转义字符

1
2
3
4
5
//在字符串中使用 "" '' \ 时要使用转义字符"\"来标识
//使用 "\n" 来完成字符串换行
//或者在字符串前加上"@"来取消转义字符"\"
Console.WriteLine("\"hello\""); //打印结果为:"hello"
Console.WriteLine(@"Go\go"); //打印结果为:"Go\go"

数据类型转换

隐式转换

小范围可以隐式转换大范围

1
2
3
long i = 1;
int i2 = 1;
i = i2;

char 可以隐式转换成整数和浮点,转换结果为 ASCII 码。

显式转换

括号强转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//显示转换 括号强转 高精度转低精度
//(整数可能会出现范围超出 浮点会出现精度问题)
// 格式: 变量 =(转换的类型)变量
int i = 1;
short s = 1;
s = (short)i;

byte b = 1;
uint ui = 1;
b = (byte)ui;

//浮点强转整形时会抛弃小数点后的数 无四舍五入
float f = 18.789f;
i = (int)f;
Console.WriteLine(i);

Parse 法

字符串转对应类型

1
2
3
4
5
6
7
8
9
//目标变量.Parse(“字符串”);
string str1 = "123";
int i2 = int.Parse(str1); //字符串转对应类型 注意值的范围
i2 += 100; //可以进行数学计算
Console.WriteLine(i2);

short s3 = (short)int.Parse("4000000"); // 字符串“4000000”转int后转short
Console.WriteLine(s3);
//打印结果为 2304 因为short范围问题

Convert 法

适用性强 什么都能转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//更准确的将各类型之间转换
//Convert.To对应类型(变量)

//转字符串
int a = Convert.ToInt32("12");
string str2 = Convert.ToString(321);

//浮点数转换 精度更高四舍五入
a = Convert.ToInt32(3.6789f);
Console.WriteLine(a);
//打印结果为 4
float f1 = Convert.ToSingle("13.567");
//打印结果为 13.567
Console.WriteLine(a);

其他类型转 String

拼接打印

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 作用 拼接打印
// 语法 变量.tostring();
string str3 = 9888.ToString();
Console.WriteLine(str3);
//打印结果为9888
int a4 = 1 ;
str3 = a4.ToString();
bool b1 = true;
str3 = b1.ToString();
Console.WriteLine(str3);
//打印结果为true

//调用打印时 进行拼接时 字符串 + 变量 会默认转换
Console.WriteLine("数字是:" + a4 + b1);
//上下效果相同
Console.WriteLine("数字是:" + a4.ToString() + b1.ToString());

异常捕获

1
2
3
4
5
6
7
8
9
try
{
string str = Console.ReadLine();
int.Parse(str);
}
catch
{
Console.WriteLine("请输入合法数字");
}

运算符

自增运算符

逻辑运算符的短路规则

与:&& 有假则假 同真为真

或:|| 有真为真 同假为假

非:! 反转真假

运算优先级: ! > && > ||

i3 打印结果为 1

位运算符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#region 知识点一 位与 &
// 规则 连接两个数值进行位计算 将数值转为2进制
// 对位运算 有0则0
int a = 1;// 001
int b = 5;// 101
// 001
//& 101
// 001 = 1
int c = a & b;
Console.WriteLine(c);
#endregion

#region 知识点二 位或 |
// 规则 连接两个数值进行位计算 将数值转为2进制
// 对位运算 有1则1

a = 1;//001
b = 3;//011
c = a | b;
// 001
//| 011
// 011
Console.WriteLine(c);
#endregion

#region 知识点三 异或 ^
// 规则 连接两个数值进行位计算 将数值转为2进制
// 对位运算 相同为0 不同为1
a = 1; //001
b = 5; //101
// 001
//^101
// 100
c = a ^ b;
Console.WriteLine(c);
#endregion

#region 知识点四 位取反 ~
// 规则 写在数值前面 将数值转为2进制
// 对位运算 0变1 1变0
a = 5;
// 0000 0000 0000 0000 0000 0000 0000 0101
// 1111 1111 1111 1111 1111 1111 1111 1010
// 反码补码知识
c = ~a;
Console.WriteLine(c);
#endregion

#region 知识点五 左移<< 和 右移>>
// 规则 让一个数的2进制数进行左移和右移
// 左移几位 右侧加几个0
a = 5; // 101
c = a << 5;
// 1位 1010
// 2位 10100
// 3位 101000
// 4位 1010000
// 5位 10100000 = 32 + 128 = 160
Console.WriteLine(c);
#endregion

三目运算符

可以实现简单的逻辑运算 if 和 else

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#region 知识点一 基本语法
//套路: 3个空位 2个符号!!!
//固定语法:空位 ? 空位 : 空位;
//关键信息:bool类型 ? bool类型为真返回内容 : bool类型为假返回内容;
//三目运算符 会有返回值,这个返回值类型必须一致,并且必须使用!
#endregion

#region 知识点二 具体使用
string str = false ? "条件为真" : "条件为假";
Console.WriteLine(str);

int a = 5;
str = a < 1 ? "a小于1" : "a不满条件";
Console.WriteLine(str);

int i = a > 1 ? 123 : 234;

//第一个空位 始终是结果为bool类型的表达式 bool变量 条件表达式 逻辑运算符表达式
//第二三个空位 什么表达式都可以 只要保证他们的结果类型是一致的

bool b = a > 1 ? a > 6 : !false;
#endregion

分支语句

If

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//三种写法
if (bool值)
{
如果为真则执行此语句块的代码
}

//————————————————————————————————

if (bool值)
{
如果为真则执行此语句块的代码
}
else (bool值)
{
否则执行此段语句块代码
}

//————————————————————————————————

if (bool值)
{
如果为真则执行此语句块的代码
}
else if (bool值)
{
否则执行此段语句块代码
}
else if (bool值)
{
否则执行此段语句块代码
}
//..........可以 else if 下去
else (bool值)
{
否则执行此段语句块代码
}

//————————————————————————————————————
//if嵌套
if (bool值)
{
if(bool值)
{

}
else if (bool值)
{

}

}
else if (bool值)
{

}

Switch

用于枚举

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
switch (变量)
{
//变量==常量时执行case和break之间的代码
case 常量: //常量,只能写固定的值 不能写范围 逻辑运算符等
满足条件所执行的代码
break;

case 常量:
满足条件所执行的代码
break;

case 常量:
满足条件所执行的代码
break;

default:
如果上面的条件都不满足 就会执行default
break;
}

//———————————————————————————————————————————————————

switch (变量)
{
//贯穿 变量 == 常量1 || 常量2 时执行break前的代码
case 常量1:
case 常量2:
满足条件所执行的代码
break;

default:
如果上面的条件都不满足 就会执行default
break;
}

//————————————————————————————————————————————————————

int a = 0;
switch
{
case 1:
Console.WriteLine("a为1")
break;

case 2:
Console.WriteLine("a为2")
break;

case 3:
Console.WriteLine("a为3")
break;

default:
Console.WriteLine("a不满足条件")
break;
}

循环语句

For 循环

使用较多

1
2
3
4
5
6
7
8
9
10
11
12
//常用在计数循环
for(int i = 0; i < 10; ++i)
{
Console.WriteLine(i);
}

//————————————————————————
//死循环
for(;;)
{
Console.WriteLine("你好");
}

While 循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
while(bool值)
{
满足条件时就会执行该语句块
执行玩会回到while开头再次判断
}

//-------------------------------------

//累加i到10
int i = 0 ;
while(i < 10)
{
++i;
}

do while 循环

用的比较少

1
2
3
4
5
do
{
判断条件在后面 所以先执行一次本语句块代码再做判断

}while(bool值);

break:跳出循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
while(true)
{
Console.WriteLine("break之前的代码");
break;
Console.WriteLine("break之后的代码 不会被执行");
}
Console.WriteLine("循环外的代码");

//----------------------------------------------

//累加i到10
int i = 0 ;
while(true)
{
++i;
if(i == 10)
{
break; //这个时while的break
}
}

continue:回到循环开始

1
2
3
4
5
6
7
8
int i = 0 ;
while(true)
{
Console.WriteLine("continue之前的代码");
continue;
Console.WriteLine("continue之后的代码不会执行");
}
Console.WriteLine("循环外的代码不会执行");

补充内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//输入一个键并赋值
char c = Console.ReadKey().KeyChar;

//输入一个键并赋值 且不在控制台显示
char c = Console.ReadKey(true).KeyChar;

//清除控制台
Console.Clear();

//设置光标位置 控制台左上角为0,0 右侧是x正方向 下方是y正方向
Console.SetCursorPosition(10,5);

//设置文字颜色
Console.ForegroundColor = ConsoleColor.Red;

//设置背景色 配合Clear使用 填充窗口颜色
Console.BackgroundColor = ConsoleColor.White;

Console.Clear();

//光标显隐
Console.CursorVisible = false;

//关闭控制台
Environment.Exit(0);