写在前言
由于有做游戏的需求,所以决定出一个人性化(自学自写)C#教学文档,没什么含金量,甚至可能不如网上的教程,但是这是我学习过程中具有思考的教程,应该具有学习意义。
C#介绍
C#是由微软在21世纪初推出的一种现代的、通用的、面向对象的、类型安全的编程语言。它是微软 .NET 平台的核心组成部分,旨在提高开发人员的生产力,并能创建健壮、可维护的应用程序。
C#的类型系统
C#具有强大且灵活的强类型语言系统。意味着在你的C#程序代码中,每一个变量,每一个表达式,每一个函数在编译时都必须要有一个明确的类型,并且编译器在编译时会强制性执行类型兼容性检查,能快速帮助开发者在开发早期发现错误,提高代码程序在后期的稳定性和可靠性。
C#类型系统的主要特点
统一类型系统:
- 在 C# 中,所有数据类型,无论是预先定义的(如 int, string)还是用户自定义的(类、结构、枚举等),都直接或间接地继承自唯一的根类型 System.Object。
- 这使得任何类型的值都可以被当作 Object 来处理,为泛型、集合类等提供了便利。
值类型:
- 值类型的变量直接包含其数据。当你将一个值类型变量赋给另一个值类型变量时,会复制包含的值。
- 通常存储在栈 (Stack) 上(或作为类/结构的一部分内联存储)。
- 主要包括:
- 简单类型: int, float, double, bool, char, decimal 等数值和布尔类型。
- 结构 (Struct): 用户自定义的值类型,例如
struct Point { public int X; public int Y; }
。- 枚举 (Enum): 一组命名的整数常量,例如
enum Status { Pending, Processing, Completed }
。
- 可空值类型 (Nullable Value Types): 通过在值类型后添加 ? (例如 int?),可以让值类型也能持有 null 值,这在处理数据库等可能存在空值的场景中非常有用。
引用类型:
- 引用类型的变量存储的是对其数据(对象)的引用(类似C语言的指针,内存地址),而不是数据本身。
- 对象本身存储在堆 (Heap) 上。当一个引用类型变量赋给另一个时,两个变量将指向堆上的同一个对象,只复制引用。
主要包括:
- 类 (Class): 面向对象编程的基础,用于定义对象的蓝图,包含数据(字段)和行为(方法)。string 类型虽然看起来像基本类型,但它是一个特殊的引用类型。
- 接口 (Interface): 定义一组相关功能的契约,类或结构可以实现接口。
- 委托 (Delegate): 类似 C/C++ 中的函数指针,用于引用方法。是事件处理和 LINQ 的基础。
- 数组 (Array): 存储相同类型元素的集合。
- object 类型:所有类型的最终基类。
- dynamic 类型:绕过编译时类型检查,在运行时解析类型。主要用于与 COM 或动态语言交互。
泛型:
- 允许你在设计类、接口和方法时,将类型的指定推迟到客户端代码声明和实例化时。
- 例如 List<T>,你可以创建一个 List<int> 或 List<string>,其中的 T 就是类型参数。
- 泛型提供了类型安全(无需强制类型转换)和性能优势(尤其对值类型,避免了装箱拆箱)。
类型安全:
- C# 编译器在编译时执行严格的类型检查。例如,你不能将一个 string 类型的值直接赋给一个 int 类型的变量(除非进行显式转换)。
- 这极大地减少了运行时因类型不匹配而导致的错误。
C#主要作用
C#如此强大并及其通用,得益于强大的.NET平台。以至于C#可以用来:
- Web 开发
- 桌面应用程序
- 游戏开发
- 云服务
- 数据库交互
- 企业级应用
- 物联网
- 人工智能与机器学习
- 工具和库开发
总结
C#凭借其现代化语言特性和卓越的开发工具(Visual Studio),已经成为目前应用最广、最有影响力的编程语言之一,适合初学者入门,也能够满足大型企业的应用需求。随着 .NET 平台的持续发展和跨平台能力的不断增强,C# 的生态系统和应用前景依然非常广阔。
Comments NOTHING