显示页面讨论反向链接回到顶部 本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。 ====== C# 类 (Class) 基础知识 ====== ===== 1. 概念:什么是类与对象? ===== 在面向对象编程 (OOP) 中,这是最核心的概念。 * **类 (Class)**:是**图纸**、**模板**或**模具**。它定义了事物应该具备的属性(数据)和行为(功能),但在内存中不占实际空间(除了静态成员)。 * **对象 (Object)**:是根据图纸制造出来的**实物**。它是类的**实例 (Instance)**,在内存中占据实际空间。 > **比喻**: * **类**:汽车的设计图纸(规定了有4个轮子、有引擎、能跑)。 * **对象**:根据图纸造出来的具体的一辆奔驰、一辆宝马。 ===== 2. 类的基本语法结构 ===== 使用 ''class'' 关键字来定义类。 <code csharp> // 定义一个类:Student public class Student { // 1. 字段 (Fields):存储数据 private int _age; // 2. 属性 (Properties):保护字段,控制读写 public string Name { get; set; } // 3. 构造函数 (Constructor):初始化对象 public Student() { // ... } // 4. 方法 (Methods):定义的行为 public void Study() { Console.WriteLine("正在学习..."); } } </code> ===== 3. 类的核心成员详解 ===== ==== 3.1 字段 (Fields) ==== 字段是类内部使用的变量,通常用于存储数据。 * **规范**:一般设为 ''private''(私有),变量名前加下划线 ''_''。 * **作用**:作为类的内部状态,不直接对外暴露。 ==== 3.2 属性 (Properties) ==== 属性是对字段的封装,用于保护数据。 * **get**:读取数据。 * **set**:写入数据(可以在这里加逻辑判断,比如年龄不能为负数)。 * **简写**:''public int Age { get; set; }'' (自动属性)。 ==== 3.3 方法 (Methods) ==== 方法是类能够执行的动作或行为(函数)。 ==== 3.4 构造函数 (Constructor) ==== * **特点**:方法名与类名相同,**没有返回值**(连 void 都不写)。 * **触发时机**:在使用 ''new'' 关键字创建对象时自动调用。 * **作用**:用于初始化对象(给属性赋初始值)。 <code csharp> class Phone { public string Brand { get; set; } public double Price { get; set; } // 无参构造函数 public Phone() { Brand = "未知品牌"; Price = 0; } // 重载构造函数(带参数) public Phone(string brand, double price) { // this 关键字代表当前对象 this.Brand = brand; this.Price = price; } } </code> ===== 4. 类的实例化 (Instantiation) ===== 定义好类之后,需要使用 ''new'' 关键字把它变成对象才能使用。 <code csharp> class Program { static void Main(string[] args) { // 1. 使用无参构造函数创建对象 // 内存中开辟了一块空间,生成了一个 Phone 对象,名字叫 myPhone Phone myPhone = new Phone(); myPhone.Brand = "Apple"; // 修改属性 // 2. 使用带参构造函数创建对象 // 在创建的同时直接赋值 Phone myXiaoMi = new Phone("Xiaomi", 3999.00); Console.WriteLine(myXiaoMi.Brand); // 输出: Xiaomi } } </code> ===== 5. this 关键字 ===== 在类的方法或构造函数中,''this'' 代表**当前这个对象实例本身**。 **主要用途**: 当方法的参数名(局部变量)与类的属性名(成员变量)重名时,使用 ''this'' 来区分。 <code csharp> class Person { public string name; // 成员变量 public void SetName(string name) // 参数 name { // name = name; // 错误:这是把参数赋给参数自己,没意义 this.name = name; // 正确:把参数 name (右边) 赋值给当前对象的成员变量 name (左边) } } </code> ===== 6. 访问修饰符 (Access Modifiers) ===== 控制类成员的可见性(封装性)。 ^ 修饰符 ^ 含义 ^ 作用范围 ^ | ''public'' | 公有的 | **最大权限**,任何地方都能访问 | | ''private'' | 私有的 | **最小权限**,只有在当前类的大括号 {} 内部能访问 | | ''protected''| 受保护的 | 只有当前类和**继承**它的子类能访问 | | ''internal'' | 内部的 | 同一个项目(程序集)内可以访问 | ===== 7. 总结 ===== * **类 (Class)** 是定义结构的蓝图。 * **对象 (Object)** 是内存中运行的实体,通过 ''new'' 创建。 * **字段**存数据,**属性**管数据,**方法**做事情。 * **构造函数**负责对象出生时的初始化。 * **this** 区分“我的成员”和“外来的参数”。 登录 Detach Close 该主题尚不存在 您访问的页面并不存在。如果允许,您可以使用创建该页面按钮来创建它。 csharp/类.txt 最后更改: 2025/11/26 17:06由 张叶安 登录