From 0fa8be7459a8170321fa64bd85274520b698f6de Mon Sep 17 00:00:00 2001
From: Kister Hakusan <2753888203@qq.com>
Date: Thu, 23 Oct 2025 21:00:25 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Lesson19?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
C#进阶/C#进阶.sln | 12 +++
.../Lesson19_预处理器指令.csproj | 10 +++
C#进阶/Lesson19_预处理器指令/Program.cs | 73 +++++++++++++++++++
.../Lesson19_预处理器指令练习.csproj | 10 +++
C#进阶/Lesson19_预处理器指令练习/Program.cs | 34 +++++++++
5 files changed, 139 insertions(+)
create mode 100644 C#进阶/Lesson19_预处理器指令/Lesson19_预处理器指令.csproj
create mode 100644 C#进阶/Lesson19_预处理器指令/Program.cs
create mode 100644 C#进阶/Lesson19_预处理器指令练习/Lesson19_预处理器指令练习.csproj
create mode 100644 C#进阶/Lesson19_预处理器指令练习/Program.cs
diff --git a/C#进阶/C#进阶.sln b/C#进阶/C#进阶.sln
index a5b1c35..f9ab673 100644
--- a/C#进阶/C#进阶.sln
+++ b/C#进阶/C#进阶.sln
@@ -77,6 +77,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson18_多线程", "Lesso
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson18_多线程练习", "Lesson18_多线程练习\Lesson18_多线程练习.csproj", "{D98DCA4D-7F46-4376-9BBF-F1343D058FF3}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson19_预处理器指令", "Lesson19_预处理器指令\Lesson19_预处理器指令.csproj", "{B8C4D4E0-7249-4AF7-BA24-18739B80D4A9}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lesson19_预处理器指令练习", "Lesson19_预处理器指令练习\Lesson19_预处理器指令练习.csproj", "{61DA81E2-A8D8-480E-B708-3D28334D76B0}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -231,6 +235,14 @@ Global
{D98DCA4D-7F46-4376-9BBF-F1343D058FF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D98DCA4D-7F46-4376-9BBF-F1343D058FF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D98DCA4D-7F46-4376-9BBF-F1343D058FF3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B8C4D4E0-7249-4AF7-BA24-18739B80D4A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B8C4D4E0-7249-4AF7-BA24-18739B80D4A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B8C4D4E0-7249-4AF7-BA24-18739B80D4A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B8C4D4E0-7249-4AF7-BA24-18739B80D4A9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {61DA81E2-A8D8-480E-B708-3D28334D76B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {61DA81E2-A8D8-480E-B708-3D28334D76B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {61DA81E2-A8D8-480E-B708-3D28334D76B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {61DA81E2-A8D8-480E-B708-3D28334D76B0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/C#进阶/Lesson19_预处理器指令/Lesson19_预处理器指令.csproj b/C#进阶/Lesson19_预处理器指令/Lesson19_预处理器指令.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/C#进阶/Lesson19_预处理器指令/Lesson19_预处理器指令.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/C#进阶/Lesson19_预处理器指令/Program.cs b/C#进阶/Lesson19_预处理器指令/Program.cs
new file mode 100644
index 0000000..72dd348
--- /dev/null
+++ b/C#进阶/Lesson19_预处理器指令/Program.cs
@@ -0,0 +1,73 @@
+#define Unity5
+#define Unity2019
+#undef Unity2019//下面#if判断Unity2019会失效
+
+
+
+using System;
+namespace Lesson19_预处理器指令
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ #region 知识点一 什么是编译器
+ //编译器是一种翻译程序
+ //他用将元语言程序翻译为目标语言程序
+
+ //源语言程序:某种程序设计语言写成的,比如C#、Java、C++等语言写的程序
+ //目标语言程序:二进制数表示的为机器代码写成的程序
+ #endregion
+
+ #region 知识点二 什么是预处理器指令
+ //预处理器指令 知道编译器 在实际编译源代码之前 对信息进行预处理
+ //预处理器指令 都是以 # 开头的指令
+ //预处理器指令不是语句,所以他们不以;分号结束
+ //目前我们经常用到的 折叠代码块 就是预处理器指令
+ #endregion
+
+ #region 知识点三 常见的预处理器指令
+ //1
+ //#define
+ //定义一个符号,类似一个没有值的常量
+ //#undef
+ //取消define定义的符号,让其失效
+ //两者都是写在脚本文件最前面
+ //一般配合if指令使用 或配合特性
+
+ //2
+ //#if
+ //#elif
+ //#else
+ //#endif
+ //和if语句规则一样,一般配合#define指令使用
+ //用于告诉编译器惊醒编译代码流程控制
+
+
+ //如果发现有Unity4这个符号那么其中包含的代码就会被编译器翻译
+ //可以通过逻辑或和逻辑与进行多种符号的组合判断
+#if Unity4 && !Unity2019
+ Console.WriteLine("使用版本Unity4编译代码");
+#elif Unity2019 //undef了Unity2019 所以这里的判断是false
+ Console.WriteLine("使用版本Unity2019编译代码");
+#elif Unity5
+ #warning 这个版本不合法 //发出警告信息
+ Console.WriteLine("使用版本Unity5编译代码");
+ #error 版本过旧请升级 //发出错误信息
+#endif
+
+ //3
+ //#warning
+ //#error
+ //告诉编译器
+ //是发出警告信息 还是错误信息
+ //编译器会在编译时显示这些信息
+ #endregion
+ }
+ }
+}
+//总结
+//预处理器指令
+//可以让代码还没有编译之前就可以进行一些预处理判断
+//在Unity中国会用来惊醒一些平台或者版本的判断
+//决定不同的版本或不同平台使用不同的代码逻辑
\ No newline at end of file
diff --git a/C#进阶/Lesson19_预处理器指令练习/Lesson19_预处理器指令练习.csproj b/C#进阶/Lesson19_预处理器指令练习/Lesson19_预处理器指令练习.csproj
new file mode 100644
index 0000000..2150e37
--- /dev/null
+++ b/C#进阶/Lesson19_预处理器指令练习/Lesson19_预处理器指令练习.csproj
@@ -0,0 +1,10 @@
+
+
+
+ Exe
+ net8.0
+ enable
+ enable
+
+
+
diff --git a/C#进阶/Lesson19_预处理器指令练习/Program.cs b/C#进阶/Lesson19_预处理器指令练习/Program.cs
new file mode 100644
index 0000000..0141881
--- /dev/null
+++ b/C#进阶/Lesson19_预处理器指令练习/Program.cs
@@ -0,0 +1,34 @@
+
+
+#define Unity2017
+#define Unity2020
+
+
+namespace Lesson19_预处理器指令练习
+{
+ class Program
+ {
+ static void Main(string[] args)
+ {
+ Console.WriteLine("请输入第一个数字:");
+ int a = int.Parse(Console.ReadLine());
+
+ Console.WriteLine("请输入第二个数字:");
+ int b = int.Parse(Console.ReadLine());
+ Console.WriteLine(Calc(a, b));
+
+ }
+ static int Calc(int a, int b)
+ {
+#if Unity5
+ return a + b;
+#elif Unity2017
+ return a*b;
+#elif Unity2019
+ return a-b;
+#else
+ return 0;
+#endif
+ }
+ }
+}