当前位置: 首页 > news >正文

C# 类的深入指南

C#中的类是面向对象编程的核心概念之一。本篇博客将详细介绍C#类中的字段、常量、方法、构造器、对象初始化器、this引用、属性、索引器、静态构造器、静态类、终结器以及类特性和修饰符。

类的字段

字段是类或结构体中存储数据的成员。

public class Person
{public string Name;private int age;
}

字段修饰符:

  • static: 静态字段属于类,而非类的实例。
  • 访问权限修饰符:public, internal, private, protected
  • 继承修饰符:new
  • 不安全代码修饰符:unsafe
  • 只读修饰符:readonly
  • 线程访问修饰符:volatile

类的常量

常量是固定值,在编译时就已经确定。

public class Constants
{public const double Pi = 3.14159;
}

类的方法

方法用于执行动作或返回值。

public class Calculator
{public int Add(int a, int b){return a + b;}
}

方法修饰符:

  • static: 静态方法可以在不创建类的实例的情况下调用。
  • 访问权限修饰符:public, internal, private, protected
  • 继承修饰符:new, virtual, abstract, override, sealed
  • 分部方法修饰符:partial
  • 非托管代码修饰符:unsafe, extern
  • 异步代码修饰符:async

实例构造器

实例构造器用于初始化类的新实例。

public class Car
{public string Model;public Car(string model){Model = model;}
}

对象初始化器

对象初始化器允许在创建对象时设置字段或属性。

var car = new Car
{Model = "Tesla"
};

this引用

this关键字引用当前类的实例。

public class Circle
{public float Radius { get; set; }public float Diameter{get { return Radius * 2f; }set { Radius = value / 2f; }}public Circle(float radius){this.Radius = radius; // 使用this来区分字段和参数}
}

属性

属性提供了访问和设置字段的受控方式。

public class Product
{private decimal _currentPrice;public decimal CurrentPrice{get { return _currentPrice; }set { _currentPrice = value; }}
}

索引器

索引器允许通过索引访问类的成员,类似于数组。

public class List<T>
{private T[] _items = new T[10];public T this[int index]{get { return _items[index]; }set { _items[index] = value; }}
}

静态构造器

静态构造器是一种特殊的方法,用于初始化类的静态成员。

public class Database
{private static readonly string ConnectionString;static Database(){// 初始化逻辑ConnectionString = "Server=myServer; Database=myDB;";}
}

静态类

静态类是一种只能包含静态成员的类,不能被实例化。

public static class MathUtils
{public static int Add(int a, int b) => a + b;
}

终结器

终结器类似于析构函数,用于释放对象占用的资源。

public class ResourceHandler : IDisposable
{public void Dispose(){// 清理资源}~ResourceHandler(){Dispose();}
}

类特性

类特性提供了关于类的元数据。

[Serializable]
public class MyClass
{// 类定义
}

类修饰符

  • public: 类可以被任何其他类访问。
  • internal: 类只能在当前程序集内部访问。
  • abstract: 抽象类不能被实例化,通常作为其他类的基类。
  • sealed: 防止类被继承。
  • static: 静态类不能被实例化,并且只能包含静态成员。
  • unsafe: 允许类中使用不安全代码。
  • partial: 允许类的定义分散在多个文件中。

表达式体方法

表达式体方法是一种简写的Lambda表达式,使用胖箭头=>

public class Greeting
{public static string GetMessage(string name) => $"Hello, {name}!";
}

方法重载

方法重载允许类中有多个同名方法,只要它们的参数列表不同。

public class Calculator
{public int Add(int a, int b) => a + b;public int Add(int a, int b, int c) => a + b + c;
}

部方法

部方法允许在一个方法中定义另一个方法。

public partial class PartialClass
{partial void Execute();
}public partial class PartialClass
{void Execute(){// 实现细节}
}

重载构造器

构造器可以被重载,以提供多种初始化对象的方式。

public class Person
{public string Name { get; set; }public Person() { }public Person(string name){Name = name;}
}

解构器

解构器允许将对象的字段反向赋值给变量。

public class Person
{public string FirstName { get; set; }public string LastName { get; set; }public void Deconstruct(out string firstName, out string lastName){firstName = FirstName;lastName = LastName;}
}

通过本篇博客,你应该对C#中的类及其成员有了更深入的理解。类是构建面向对象程序的基石,合理使用这些特性可以使代码更加灵活和强大。希望这些知识点能帮助你在C#编程中更加得心应手。

相关文章:

  • 【JMeter接口自动化】第7讲 Jmeter三个重要组件
  • 第100+9步 ChatGPT文献复现:ARIMA预测百日咳
  • 透视AI技术:探索折射技术在去衣应用中的奥秘
  • 百度地图2
  • # SpringBoot 如何让指定的Bean先加载
  • 【贪心算法题记录】53. 最大子数组和
  • 天洑国产工业软件2024R1版本产品发布会顺利举办
  • Dynamics 365:安全的客户参与应用程序
  • HR人才测评,如何做中层管理人员的素质测评?
  • 数据库设计:实体关系图
  • 速盾:怎么查询cdn真实ip?
  • Check Point 安全网关任意文件读取漏洞复现(CVE-2024-24919)
  • spring自动配置
  • 智能台灯系统之PWM调光的优缺点
  • 销量逆袭!敦煌店铺如何靠自养号测评轻松引爆市场?
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • 4个实用的微服务测试策略
  • exports和module.exports
  • express + mock 让前后台并行开发
  • hadoop集群管理系统搭建规划说明
  • Java Agent 学习笔记
  • JS数组方法汇总
  • Linux下的乱码问题
  • ng6--错误信息小结(持续更新)
  • nginx 负载服务器优化
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • python3 使用 asyncio 代替线程
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • 从零开始在ubuntu上搭建node开发环境
  • 前端
  • 如何进阶一名有竞争力的程序员?
  • 什么是Javascript函数节流?
  • 使用SAX解析XML
  • 体验javascript之美-第五课 匿名函数自执行和闭包是一回事儿吗?
  • 用quicker-worker.js轻松跑一个大数据遍历
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 数据可视化之下发图实践
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • (09)Hive——CTE 公共表达式
  • (2)STM32单片机上位机
  • (33)STM32——485实验笔记
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (libusb) usb口自动刷新
  • (定时器/计数器)中断系统(详解与使用)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (转)ORM
  • (转)Unity3DUnity3D在android下调试
  • (转)创业家杂志:UCWEB天使第一步
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bashrc在哪里,alias妙用
  • .net core 依赖注入的基本用发
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法