news 2026/7/14 18:42:48

C#核心(持续更新中)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C#核心(持续更新中)

一、类和对象

1、什么是类
基本概念:
具有相同特征
具有相同行为
一类事物的抽象
类是对象的模板
可以通过类创建出对象
类的关键词 class
2、类申明在哪里
类一般申明在namespace语句块中
3、类申明语法

访问修饰符 class 类名 { //特征——成员变量 //行为——成员方法 //保护特征——成员属性 //构造函数和析构函数 //索引器 //运算符重载 //静态成员 }

4、类申明实例
命名:帕斯卡命名法
注意:同一个语句块中的不同类不能同名

//这个类用来形容人类 class Person { //特征——成员变量 //行为——成员方法 //保护特征——成员属性 //构造函数和析构函数 //索引器 //运算符重载 //静态成员 }

5、什么是类对象
基本概念:
类的申明 和 类对象(变量)申明是两个概念
类的申明 类似 枚举 和 结构体的申明 类的申明相当于申明了一个自定义变量类型
而对象 是类创建出来的
相当于申明一个指定类的变量
类创建对象的过程 一般称为实例化对象
类对象 都是引用类型的
6、实例化对象基本语法
类名 变量名;
类名 变量名 = null;(null代表空)
类名 变量名 = new 类名( );
7、实例化对象

Person p; Person p2 = null;//不分配堆内存空间 Person p3 = new Person();//相当于一个人对象 Person p4 = new Person();//相当于又是一个人对象

注意:p3和p4虽然是来自一个类的实例化对象,但是他们的特征、行为等等信息,都是他们独有的,不要觉得他们是共享了数据的两个人,彼此没有任何关系

8、例题

GameObject A = new GameObject(); GameObject B = A; B = null;

A在栈空间存储地址,在堆内存分配空间,栈地址指向堆内存中空间
B在栈中开辟新空间,也存储A栈空间中的地址,栈地址指向对内存中空间
B在栈中空间不变,内容变成空,不影响A

GameObject A = new GameObject(); GameObject B = A; B = new GameObject();

A在栈空间存储地址,在堆内存分配空间,栈地址指向堆内存中空间
B在栈中开辟新空间,也存储A栈空间中的地址,栈地址指向A的堆内存中空间
B在栈中空间不变,内容变成新的地址,指向堆内存中新的空间,不影响A

Student s = new Student(); s.age = 10; Student s2 = s; s2.age = 20;

s在栈空间存储地址,在堆内存分配空间,s栈地址指向s堆内存中空间,s.age存在s的堆空间
s2在栈中开辟新空间,也存储s栈空间中的地址,s2栈地址指向s堆内存中空间,s2.age就是s.age
s2.age改变后,s1.age也改变

二、成员变量和访问修饰符

1、成员变量
基本规则:
申明在类语句块中
用来描述对象的特征
可以是任意变量类型
数量不做限制
是否赋值根据需求来定
实例:

//枚举类——性别 enum E_SexType { Man, Woman, } //结构体——位置 struct Position { } //类 class Person { //特征——成员变量 //姓名 public string name = "ZCloud"; //年龄 public int age; //性别 public E_SexType sex; //朋友 public Person friend; //位置 public Position pos; }

注意:如果要在类中申明一个和自己相同类型的成员变量是,不能对它进行实例化,如上面例子中的friend

2、访问修饰符

public —— 公共的 自己(内部)和别人(外部)都能访问和使用
private —— 私有的 自己(内部)才能访问和使用 不写 默认为private
protected —— 保护的 自己(内部)和子类才能访问和使用
3、成员变量初始值
数值类型 默认都是0
bool类型 默认false
引用类型 默认null
看默认值方法:括号里加要看的类型

Console.WriteLine(default(int));

三、成员方法

1、成员方法的申明
基本概念:
成员方法(函数)用来表现对象行为
申明在类语句块中
是用来描述对象行为的
规则和函数申明规则相同
受到访问修饰符规则影响
返回值参数不做限制
方法数量不做限制
注意:
成员方法不要加static关键字
成员方法 必须实例化出对象 再通过对象来使用 相当于该对象执行了某个行为

//类 class Person { //特征——成员变量 //姓名 public string name = "ZCloud"; //年龄 public int age; //性别 public E_SexType sex; //行为——成员方法 //判断是否成年 public bool IsAdult() { return age >= 18; } //说话 public void Speak(string str) { Console.WriteLine("{0}说{1}",name,str); } }

四、构造函数和析构函数

(一)构造函数
基本概念:
在实例化对象时 会调用的用于初始化的函数
如果不写 默认存在一个无参构造函数
构造函数写法:
没有返回值
函数名和类名必须相同
没有特殊需求时 一般都是public的

class Person { public string name; public int age; public Person() { name = "zCloud"; age = 18; } }

//类中是允许自己申明无参构造函数的
//结构体不允许
构造函数可以被重载

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 18:42:06

Vibe Coding的移动端革命:在手机上写代码是一种怎样的体验?

2026年,我在地铁上用手机完成了一个Web应用的全部开发。这不是噱头,也不是"凑合能用"的玩具。而是一个真正完整的开发流程——需求描述、代码生成、调试、部署,全程在一台手机上完成。Vibe Coding正在改变移动端编程的可能性。当AI…

作者头像 李华
网站建设 2026/7/14 18:35:21

OpenCvSharp实战:巧用凸包缺陷分割粘连目标与精确定位

1. 工业视觉中的粘连目标分割难题在自动化分拣流水线上,我们经常会遇到这样的场景:传送带上的零件因为摆放过于紧密而相互接触,或者产品在包装过程中发生重叠。这时候传统的轮廓检测方法就会失效——计算机会把这些粘连的物体识别成一个整体。…

作者头像 李华
网站建设 2026/7/14 18:33:50

AI图像生成提示词工程:从“AI美女 车上好热”看多概念融合技术

最近在AI图像生成领域,一个看似简单的提示词"AI美女 车上好热"引发了广泛讨论。这个提示词背后反映的不仅是技术问题,更是对AI图像生成模型理解能力和创意表达边界的深度考验。1. 为什么这个简单的提示词值得深入分析"AI美女 车上好热&qu…

作者头像 李华
网站建设 2026/7/14 18:30:25

ACCESS从零到一:构建你的第一个关系型数据库

1. 为什么选择Access作为第一个数据库如果你正在寻找一个既简单又功能完善的数据库入门工具,Microsoft Access绝对是理想选择。作为Office套件中的一员,Access完美平衡了易用性和功能性,特别适合非专业开发人员快速构建小型数据库应用。我刚开…

作者头像 李华
网站建设 2026/7/14 18:30:25

基于FPGA的以太网ARP协议实现

1.以太网硬件实现基础 FPGA将以太网数据发送给PHY芯片, PHY会将接收数据转换成模拟的差分信号传输到RJ45座子, 最后通过网线与上位机设备通信。 具体流程如下图所示: 因此要使用以太网就不得不了解两种接口协议,分别是RGMII和GMII, 首先网线通过RGMII协议将数据传到FPGA…

作者头像 李华
网站建设 2026/7/14 18:29:11

openeuler/compliance:开源合规管理的终极指南与工具集

openeuler/compliance:开源合规管理的终极指南与工具集 【免费下载链接】compliance Improve community members compliance capability,define the rules, develop the tools and suuply services. 项目地址: https://gitcode.com/openeuler/compliance 前往…

作者头像 李华