C#简介

C#在2000年6月发布,使用了.NET框架作为运行环境,源于C语言系列,继承了C和C++强大功能的同时去掉了一些它们的复杂特性(例如,没有宏以及不允许多重继承)。C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程的支持成为.NET开发的首选语言。是由C和C++衍生出来的一种安全的、稳定的、简单的、优雅的面向对象编程语言。

C#主要应用于桌面应用程序开发、Web应用程序开发、移动应用程序开发、游戏开发、云和服务开发、数据库开发、科学计算、物联网(IoT)应用程序、人工智能(AI)应用程序等。对于本系列学习笔记来说,主要会列举unity游戏开发中的代码作为例子。

尽管用了快两年C#了,但除了最开始的时候学习了一次入门版,后面基本上都是靠着GPT大跌狠狠输出,没有再进一步学习C#。虽然个人博客中已经开了无数个学习笔记的第一篇,但还是希望能把这些系列重新启动,并且借此机会希望能认真系统过一遍C#,夯实基础。

首先,相比经典的C语言,C#是面向对象编程的语言。什么是面向对象编程(OOP)呢,这是一种编程范式,主要思想是通过将数据和操作封装在一个个对象之中,通过对象之间的交互来完成任务。例如,在游戏开发的过程中,一个敌人就可以是一个可以交互的对象,而在C#中就对应着一个类(class),这个类记录着敌人的各种信息,例如血量,攻击力等等。

面向对象编程有着四大特性,分别是封装、继承、多态和抽象。下面将简要介绍一下这四大特性。

封装。是指将数据和操作(方法)绑定在一起,限制外部对对象内部数据的直接访问。通过访问修饰符(public,private,protected)来控制访问权限。最常见的就是在unity的inspector窗口里,对于public 的数据可以直接修改,而对于private的数据则不能修改,它们被封装在了类的内部,只能在脚本内部更改。

继承。在C#中,子类可以继承父类的属性和方法,从而实现代码的复用和扩展,避免功能的重复实现。例如,在管理unity的面板的时候,对于一个UI面板,打开、关闭这些功能都是公用的,因此我们可以先写一个面板基类,里面封装这些公用方法,然后所有面板的管理脚本都可以继承这个基类。不但如此,子类还可以新增或者重写父类的方法,实现更加灵活的代码利用。

多态。指的是,同一个方法或者操作,可以根据对象的类型表现出不同的行为,包括方法重载(编译时多态)和方法重写(运行时多态)。

抽象。抽象关注事物的共性,通过定义抽象类或者接口来描述对象的公共特性和行为,而不关心其具体实现。换句话说,抽象定义“是什么”,而多态更加关心事物的多样性,指的是同一个接口或者方法在不同对象中有什么不同的实现,强调“如何表现”。不过实际上,多态和抽象经常一同出现,这将会在后面详细展开讲。

C#环境

如果是只用C#编写Unity程序脚本的开发者,可以直接在网上搜索Unity环境配置,一步到位就可以配置好环境。

在Windows平台,推荐的IDE(集成开发环境)是Visual Studio(VS),在 Visual Studio 中,用于编译 C# 代码的编译器是 Roslyn,它的正式名称是 .NET Compiler Platform

而在Mac中(尽管并不推荐使用Mac开发)推荐的IDE仍然是VS,除此之外需要额外安装Mono,这是一个 运行时环境(Runtime Environment),类似于 .NET Framework 或 .NET Core。它负责处理程序运行时所需的核心功能,如内存管理、线程调度、异常处理以及与底层操作系统的交互。Windows中的VS已经默认安装了.NET SDK,包括 .NET Runtime 和工具(如 Roslyn 编译器),而Mac中的VS不支持 Windows 特定的 .NET Framework(因为它依赖 Windows-only 技术),因此需要额外安装mono作为运行时环境。自mono4.0起,mono已经开始调用Roslyn作为C#的编译器了。因此在Win和Mac中都可以采用VS+Roslyn作为开发编译工具,只不过运行时环境会有所不同。