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

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; } }

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

http://www.cnnetsun.cn/news/3378974.html

相关文章:

  • Vibe Coding的移动端革命:在手机上写代码是一种怎样的体验?
  • OpenCvSharp实战:巧用凸包缺陷分割粘连目标与精确定位
  • AI图像生成提示词工程:从“AI美女 车上好热”看多概念融合技术
  • ACCESS从零到一:构建你的第一个关系型数据库
  • 基于FPGA的以太网ARP协议实现
  • openeuler/compliance:开源合规管理的终极指南与工具集
  • 程序员正在悄悄淘汰的手动注释方式,而顶尖团队已用ChatGPT实现注释覆盖率100%(内部白皮书节选)
  • 多店铺业绩目标完成率自动统计,老板喜欢的日报来了 —— 跨系统数据集成与自动化日报技术测评
  • 物联网云平台是什么?有什么推荐?
  • 免费开源的PDF差异检测工具:5分钟快速上手diff-pdf
  • 深度技术解析:如何高效修复损坏MP4/MOV视频文件的专业指南
  • 多模态AI健康助手:架构、优化与应用实践
  • 智能单词记忆系统:提升小升初英语效率的解决方案
  • 2000-2025年各省、市气候政策不确定性指标CPU月度年度
  • GitHub Copilot SDK与混合AI实现README转PPT自动化
  • 【Springboot毕设全套源码+文档】基于springboot拍卖网站的设计与实现(丰富项目+远程调试+讲解+定制)
  • 开源OCR引擎Tesseract实战:从环境搭建到多语言识别
  • 4K修复技术与系统调试思维:从《黑暗边缘》解析影视工程实践
  • AI大模型赋能11大行业:从金融到医疗的全方位应用指南
  • Python通达信数据获取终极指南:5分钟掌握股票数据分析利器
  • AI Code终端系统:从指令驱动到任务自治的演进
  • 5分钟快速上手:鸣潮自动化工具全面指南
  • 综合实力最强的国际EMBA怎么选?2026避坑选购推荐攻略
  • Wand-Enhancer终极指南:三步免费解锁WeMod Pro高级功能完全教程
  • ChatGPT商业提案生成器失效真相:3大认知盲区+2个数据锚点校准法(附审计级提示词清单)
  • 【GIS入门】ArcGIS软件安装、界面操作与空间数据浏览查询
  • 本地视频预览别只自己看:把Remotion动效项目发给客户远程验收
  • tldr-sh-client贡献指南:如何为这个轻量级命令行工具添砖加瓦
  • 从源码解析material-ui-chip-input实现原理:打造自定义标签输入组件
  • 双模型协作架构:Gemini与Claude的AI开发实践