通过这门课程,学习了 C# 这一门高级语言。

C# 可以完成很多事情。例如:

  1. 编制 ASP.NET 后端服务程序
  2. 编制 Window Form 桌面程序
  3. 配合 XAML 标记语言,可以编写 WPF 应用程序。
  4. 使用 Unity 引擎可以快速开发一款多端运行的游戏。

认真学习了有关程序流程结构的相关知识。

  1. 顺序结构:程序由上往下逐行执行。
  2. 分支结构:当表达式的条件成立,则执行对应的代码块。
  3. 一个完整的 C# 程序主要包含以下部分:
    1. 命名空间(Namespace)声明:可以理解为 C# 的文件夹,不同的命名空间下可以包含相同名字的类。
    2. 一个类(Class)
    3. 类的成员方法:用于执行该对象实例化之后某些特定的操作
    4. 类的成员变量:也称作属性,用于保存该实例化之后的对象属性值。
    5. 一个 Main 方法:是所有 C# 程序的入口函数
    6. 语句(Statement)和表达式(Expression):语句用于让程序执行某件操作,而表达式可以用于得到某些数据的处理结果
    7. 注释:用于说明这行代码的用处,是团队协作中甚至是个人项目必不可少的东西,让你在很久之后再次打开这个项目时能够快速地明白该代码段是在处理什么事情。

学习到了许多关键字,以及相应的语法结构

如 delegate(委托)搭配 events(事件)使用。

using System;

namespace TootaioFramework {
public class MyClass {
// 声明委托
public delegate void MyDelegateEvent(int param1, int param2);

// 声明事件
public event MyDelegateEvent OnEventTriggered;

// 声明一个函数,这个函数会调用该委托
public void DoSomething() {
// 其他代码段
// 执行事件,如果该事件有被挂上,则执行该委托,并传递对应的参数
OnEventTriggered?.Invoke(1, 2);
}
}

public class AnotherClass {
// 执行该代码
public static void Main(string[] args) {
MyClass myClass = new MyClass();
myClass.OnEventTriggered += EventTriggered;
myClass.DoSomething();
}

// 这是所需要执行的代码
public static void EventTriggered(int param1, int param2) {
// 执行某些代码段
Console.WriteLine($"The params are: {param1} and {param2}.");
}
}
}

学习了面向对象的思想,

面向对象包含了两个很重要的东西——属性、方法

  • 属性:这个对象有什么特征。如:颜色、重量、位置
  • 方法:这个对象能干嘛。如:上色、掉落

并学会了运用它来解决一些问题。例如,动物们都会发出叫声,而他们的叫声各不相同。这就可以用多态来实现。

namespace TootaioExercise {
// 声明一个动物类
internal abstract class Animal {
public string name;
public string type;

// 动物可以获取名字
public abstract void GetName();
// 动物可以有叫声
public abstract void Cry();
}

// 狗子继承 动物类
internal class Dog: Animal {
public override void Cry() {
Console.WriteLine("汪汪汪");
}

public override void GetName() {
Console.WriteLine($"我叫{name},是只{type}");
}
}

// 猫子继承 动物类
internal class Cat: Animal {
public override void Cry() {
Console.WriteLine("喵喵喵");
}

public override void GetName() {
Console.WriteLine($"我叫{name},是只{type}");
}
}

internal class Program {
static void Main(string[] args) {
// 我们使用 动物类来定义一个狗子,和一个猫子
Animal dodo = new Dog();
Animal lele = new Cat();
dodo.name = "多多";
dodo.type = "哈士奇";
lele.name = "乐乐";
lele.type = "橘猫";
// 因为动物类有声明了他们的共同函数,所以可以直接调用该函数。这就是多态
dodo.Cry();
dodo.GetName();
lele.Cry();
lele.GetName();
}
}
}

另外还有一些心得。

在这个学期,我尝试用 Unity 开发一款小游戏。游戏成品可在官方网站 https://tootaio.com/demo/ 下载体验。其中学会了 Unity 引擎的使用,了解怎么根据 Unity 以及其他优秀工具开放的 API 来进行开发。游戏功能包括:

  • 点击屏幕控制角色移动。
  • 随机生成平台

学到的知识点有:

  • 对象池 - 用于优化游戏运行性能。对象池的好处是可以通过循环使用 Unity GameObject,来减少内存分配的执行事件。在游戏开始之后几乎不用额外动态的分配内存空间给予程序。这大大的提高了游戏在手机端上运行的性能。