C#中类‌的核心定义

server/2025/3/14 17:13:11/

‌C# 类‌是面向对象编程(OOP)中的核心概念之一,用于定义对象的模板或蓝图,包含数据成员(字段、属性)和函数成员(方法、事件等)。类提供了封装机制,将数据和操作数据的方法组合在一起,隐藏内部实现细节,只对外提供有限的接口,从而提高代码的可维护性和安全性。‌

1. 类的本质‌

  • 引用类型‌:对象存储在堆(Heap)中,变量持有对象引用。
  • ‌面向对象三大特性‌:
    ‌封装‌:通过访问修饰符(public/private/protected)控制成员可见性。
    ‌继承‌:单继承(class Derived : Base),支持多层继承。
    ‌多态‌:通过虚方法(virtual)、抽象方法(abstract)和重写(override)实现。

2. 类的基本结构‌

[访问修饰符] class 类名 [: 基类] [, 接口1, 接口2...]
{// 成员定义private string _field;          // 字段public string Property { get; set; } // 属性public void Method() { }        // 方法public 类名() { }               // 构造函数~类名() { }                     // 析构函数(极少使用)
}

‌3. 核心成员类型‌

成员类型说明示例
‌字段‌存储数据的变量,通常设为private private int _id;
‌属性‌封装字段,控制读写逻辑public string Name { get; private set; }
‌方法‌定义对象行为public void Save() { … }
‌构造函数‌初始化对象,支持重载public Person(string name) { … }
‌事件‌用于发布-订阅模式public event EventHandler OnClick;
‌索引器‌使对象支持类似数组的访问public int this[int i] { get; set; }

‌4. 关键特性‌

  • ‌静态成员‌:类级别共享,通过 static 关键字定义。
public static int Count;  // 静态字段
public static void Log() { } // 静态方法
  • ‌抽象类‌:用 abstract 修饰,不能实例化,用于定义通用逻辑。
public abstract class Shape { public abstract double Area(); }
  • ‌密封类‌:用 sealed 修饰,禁止继承。
public sealed class StringUtils { }
  • ‌分部类‌:用 partial 拆分类到多个文件。
// File1.cs
public partial class Data { } 
// File2.cs
public partial class Data { }

‌5. 类 vs 结构体(Struct)‌

‌特性‌‌类(Class)‌‌结构体(Struct)‌
‌内存分配‌堆内存栈内存(通常)
‌赋值行为‌复制引用(修改副本影响原对象)复制值(副本独立)
‌继承‌支持不支持
‌默认构造器‌有无参构造器C# 10 前不能显式定义无参构造器
‌适用场景‌复杂对象、需继承或引用语义小型数据(如坐标点、颜色值)

‌6. 最佳实践‌

  1. 封装数据‌:字段设为 private,通过属性暴露必要访问。
  2. 避免过深继承‌:优先使用组合而非继承。
  3. 不可变设计‌:对线程安全的数据使用 readonly 字段。
public class ImmutablePoint
{public readonly int X;public readonly int Y;public ImmutablePoint(int x, int y) => (X, Y) = (x, y);
}
  1. 资源释放‌:实现 IDisposable 接口管理非托管资源,而非依赖析构函数。
public class FileReader : IDisposable
{private Stream _stream;public void Dispose() => _stream?.Close();
}

‌7. 典型类示例‌

public class BankAccount
{// 字段private decimal _balance;private readonly string _owner;// 属性public decimal Balance => _balance; // 只读属性// 构造函数public BankAccount(string owner, decimal initialBalance){_owner = owner;_balance = initialBalance;}// 方法public void Deposit(decimal amount){if (amount <= 0)throw new ArgumentException("Deposit amount must be positive");_balance += amount;}// 重写 ToStringpublic override string ToString() => $"{_owner}'s account: {_balance:C}";
}
// 使用
var account = new BankAccount("Alice", 1000);
account.Deposit(500);
Console.WriteLine(account); // 输出: Alice's account: $1,500.00

掌握类的核心设计原则,可以高效构建可维护的面向对象程序。根据场景选择类或结构体,合理使用封装、继承和多态,是提升代码质量的关键。


http://www.ppmy.cn/server/174936.html

相关文章

c++中cout输出指定位数的int类型数据,输出指定精度的浮点型数据

1、输出指定位数的int型数据&#xff08;包含iomanip文件&#xff09; #include <iostream> #include <iomanip>int main() {int num 123;// 设置输出宽度为5&#xff0c;不足5位在前面补空格std::cout << std::setw(5) << num << std::endl;/…

Spring WebSocket 像写http接口一样处理WebSocket消息(Stomp协议)

简单的WebSocket服务搭建 在聊Stomp协议之前&#xff0c;先看一下Spring boot使用比较原始的方法是怎么搭建WebSocket服务的 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactI…

网络爬虫-1:发送请求+维持会话+代理设置/超时设置

1.基于get发送请求 2.基于post发送请求 3.维持会话 4.代理设置/超时设置 一.基于get发送请求 1.获取网页源码1 使用json库中的json.loads(),将json格式的字符串变为Python的字典形式 以下通过http://httpbin.org/get网址进行基本练习操作 import requests import json urlh…

电力时间同步系统,京准电钟电子助力增效

电力时间同步系统&#xff0c;京准电钟电子助力增效 电力时间同步系统&#xff0c;京准电钟电子助力增效 电力时间同步系统是保障电网稳定运行的关键技术&#xff0c;其核心在于为全网的设备提供统一、高精度的时间基准。以下从技术方案、系统设计要点及挑战与解决方案等方面…

【Linux 指北】常用 Linux 指令汇总

第一章、常用基本指令 # 注意&#xff1a; # #表示管理员 # $表示普通用户 [rootlocalhost Practice]# 说明此处表示管理员01. ls 指令 语法&#xff1a; ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xf…

Python中的Collections库

目录 defaultdict&#xff1a;默认值字典Counter&#xff1a;计数器deque&#xff1a;双端队列namedtuple&#xff1a;命名元组OrderedDict&#xff1a;有序字典ChainMap&#xff1a;链式字典UserDict/UserList/UserString&#xff1a;自定义容器基类 1. defaultdict&#xff…

【C++标准库类型】深入理解C++中的using声明:从基础到实践

目录 一、using声明基础 1.1 基本语法形式 1.2 典型应用场景 1.3 作用域规则 二、关键注意事项 2.1 命名冲突处理 2.2 头文件使用规范 2.3 与typedef的对比 三、面向对象中的应用 3.1. 解除派生类名称隐藏&#xff08;核心应用&#xff09; 3.2. 构造函数继承&#…

基于异构特征融合与轻量级集成学习的软件漏洞挖掘方案设计与Python实现

标题:基于异构特征融合与轻量级集成学习的软件漏洞挖掘方案设计与Python实现 一、方案设计原理 异构特征工程 静态特征:基于AST的代码属性图(CPG)解析(使用Joern+NetworkX)动态特征:内存访问模式分析(通过QEMU模拟执行)上下文特征:CWE漏洞模式匹配(集成Semgrep规则引…