C#核心

news/2026/1/25 14:50:25/文章来源:https://www.cnblogs.com/hms-area/p/19529702

类和对象

namespace 类和对象
{enum E_SexType{man,woman,}//成员变量,初始值:值类型默认都是0,引用类型默认都是null//访问修饰符public class Person(){public string name;public int age;public enum E_SexType;public Person[] friends;public void Speak(string str){Console.WriteLine("{0}说了{1}", name, str);}public bool IsAdult(){return age >= 18;}public void AddFriend(Person p){if(friends == null){friends = new Person[] { p };}else{Person[] NewFriends = new Person[friends.Length + 1];for (int i = 0; i < friends.Length; i++){NewFriends[i] = friends[i];}NewFriends[NewFriends.Length - 1] = p;friends = NewFriends;}}}internal class Program{static void Main(string[] args){Person p1 = new Person();p1.name = "aaa";p1.age = 20;p1.Speak("abc");Person p2 = new Person();p2.name = "ccc";p2.age = 16;p1.AddFriend(p2);for (int i = 0; i < p1.friends.Length; i++){Console.WriteLine(p1.friends[i].name);}Console.WriteLine( p1.IsAdult());Console.WriteLine(p1.age);  Console.WriteLine("Hello, World!");}}
}

封装_构造函数和析构函数

namespace 封装_构造函数和析构函数
{//构造函数//在实例化对象时,会调用的用于初始化的函数//如果不写,默认存在一个无参构造函数//1.没有返回值//2.函数名和类名必须相同//3.没有特殊需求时,一般都是public的class Person{public string name;public int age;public Person(){name = "aaa";age = 18;}public Person(int age){this.age = age;}public Person(string name){this.name = name;}//先调用namepublic Person(string name, int age):this(name){}//析构函数,引用类型的堆内存被回收时~Person(){}}//垃圾回收机制//垃圾分类的过程是在遍历堆(heap)上动态分配的所有对象//通过识别它们是否被引用来确定哪些对象是垃圾//GC只负责堆内存的回收//栈上的内存是由系统自动管理的internal class Program{static void Main(string[] args){Person p = new Person();Console.WriteLine("Hello, World!");//手动触发垃圾回收GC.Collect();}}
}

成员属性

namespace 成员属性
{class Person{private string name;private int age;private int money;private bool sex;//成员属性用于保护成员变量//为成员属性的获取和赋值添加逻辑处理public string Name{get{//可以在返回之前添加一些逻辑规则//get意味着这个属性可以获取的内容return name;}set{//可以在设置之前添加一些逻辑规则//value关键字用于表示外部传入的值name = value;}}public int Money{get{//解密处理return money-5;}set{//加密处理money = value+5;}}public bool Sex{get{return sex;}}//自动属性//没有在get和set中写逻辑的需求或者想法public float Height{get;set;}}internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");Person p = new Person();p.Name = "aaa";Console.WriteLine(p.Name);p.Money = 10;Console.WriteLine(p.Money);Console.WriteLine(p.Sex);}}
}

索引器

namespace 索引器
{class Person{private string name;private int age;private Person[] friends;//索引器写法public Person this[int index]{get{return friends[index];}set{friends[index] = value;}}}internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");}}
}
# 静态成员
namespace 静态成员
{class Test{//静态成员变量public static float PI = 3.14f;//成员变量public int testInt = 10;//静态成员方法//成员变量只能将对象实例化出来后,才能点出来使用,不能无中生有//不能直接使用非静态成员public static float Calc(float r){return PI * r * r;}}internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");//静态成员可以不实例化,直接调用//程序开始运行时,就会分配内存空间,所以能直接使用//静态成员和程序同生共死Console.WriteLine(Test.PI);Console.WriteLine(Test.Calc(2));}}
}

封装_静态类和静态构造函数

namespace 封装_静态类和静态构造函数
{//静态类,不能实例化static class TestStatic{public static int testIndex = 0;public static void Test(){}//静态构造函数static TestStatic(){}}internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");}}
}

拓展方法

namespace 拓展方法
{static class Tools{//为int拓展了一个成员方法//value代表使用该方法的实例化对象public static void SpeakValue(this int value){Console.WriteLine("为int拓展的方法" + value);}public static void SpeakString(this string str,string str2){Console.WriteLine("调用方法的对象" + str);Console.WriteLine("传的参数" + str2);}public static void Fun3(this Test t){Console.WriteLine("为test拓展的方法");}}//为自定义类型拓展方法class Test{public int i = 10;public void Fun1(){Console.WriteLine("123");}public void Fun2(){Console.WriteLine("456");}}internal class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");int i = 10;i.SpeakValue();string str = "aaa";str.SpeakString("111");Test t = new Test();t.Fun3();}}
}

运算符重载

namespace 运算符重载
{class Point{public int x;public int y;//一定是一个公共的静态方法//返回值写在operator前面public static Point operator +(Point p1,Point p2){Point P = new Point();P.x = p1.x + p2.x;P.y = p1.y + p2.y;return P;}//一个运算符可以多次重载public static Point operator +(Point p1, int value){Point P = new Point();P.x = p1.x + value;P.y = p1.y + value;return P;}}internal class Program{static void Main(string[] args){Point p1 = new Point();p1.x = 1;p1.y = 2;Point p2 = new Point();p2.x = 3;p2.y = 4;Point p3 = new Point();p3 = p1 + p2;Point p4 = new Point();p4 = p1 + 2;}}
}

装箱拆箱

发生条件:
用object存值类型(装箱)
再把object转为值类型(拆箱)

基于里氏替换原则的object可以用object容器装载一切类型的变量
object是所有类型的基类

装箱
object v = 3;
拆箱
int intvalue = (int)v;

密封类

让类不能再被继承

sealed class Father
{}class Son:Father
{}

多态

多态:让同一类型的对象,执行相同行为时有不同的表现
解决的问题:让同一对象有唯一的行为特征
vob:
v:virtual 虚函数
o:override 重写
b:base 父类
v和o一定是结合使用的 来实现多态
b是否使用根据实际需求 保留父类行为

多态_抽象类和抽象方法

abstrct class Thing
{public string name;
}

抽象类不能被实例化
抽象方法1.必须在抽象类中声明2.没有方法体3.不能是私有的4.继承后必须实现,用override重写

不希望被实例化的对象,相对比较抽象的类可以使用抽象类
父类中的行为不太需要被实现的,只希望子类去定义具体的规则的 可以选择抽象类

接口

namespace 接口
{//接口是抽象行为的“基类”interface IFly{void Fly();string Name{get;set;}int this[int index]{get;set;}event Action dosomething;}class Animal{}//类可以继承一个类,多个接口//继承了接口之后,必须实现里面的内容,并且必须是public的class Person : Animal,IFly{//实现的接口函数,可以加virtual再在子类重写public virtual void Fly(){}public string Name{get;set;}public int this[int index]{get{return 0;}set{}}public event Action dosomething;}//接口继承接口时,不需要实现//待类继承接口后,类自己去实现所有内容interface IWalk{}interface IMove:IFly,IWalk{}//显示实现接口,就是用接口名.行为名实现interface IAtk{void Atk();}interface ISuperAtk{void Atk();}class Player:IAtk,ISuperAtk{void IAtk.Atk(){throw new NotImplementedException();}void ISuperAtk.Atk(){throw new NotImplementedException();}public void Atk(){}}internal class Program{static void Main(string[] args){Console.WriteLine("接口");//接口也遵循里氏替换原则IFly f = new Person();Player p = new Player();(p as IAtk).Atk();(p as ISuperAtk).Atk();p.Atk();}}
}

string常用方法

字符串指定位置读取

//字符串本质是char数组
string str = "aaa";
Console.WriteLine(str[0]);
//字符串拼接
str = string.Format("{0}{1},1,222333");
Console.WriteLine(str);
//正向查找字符位置
str = "abcde";
int index = str.IndexOf("a");
Console.WriteLine(index);
//移除指定位置后的字符
str = str.Remove(3);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1214825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#进阶

Arraylist ArryList array = new ArrayList();Stack 本质是object[]数组,后进先出 Stack stack = new Stack(); //压栈 stack.push(1); //取 object v = stack.Pop(); //查,只能查看栈顶的内容 v = stack.peek; //查看…

2026年市场上有名的打包带厂家排行,市场上有实力的打包带直销厂家广营宏利满足多元需求

在工业制造与物流运输领域,打包带作为关键的紧固与封装材料,其性能与可靠性直接关系到货物安全与运输效率。随着制造业的升级和供应链管理的精细化,市场对打包带产品的需求正从基础的“捆扎”功能,向高强度、耐腐蚀…

BES(恒玄)蓝牙平台EQ 调试和设定

1.EQ调试原理 说这个部分是为了同学们更好的分析解决问题 打开所使用工程的target.mk文件,修改宏PC_CMD_UART ?= 1 同时关闭DEBUG=0 Bes提供了多种滤波方式,可在target.mk中进行配置,下图是我使用的配置,具体要怎么配置,可一个根据实际的项目需求更改。 然后我们看下…

将分散的Pytest测试脚本统一接入测试平台:FastAPI改造方案详解

在上一篇文章《Pytest 测试用例自动生成:接口自动化进阶实践》中,我们已经解决了“如何高效编写和维护接口自动化用例”的问题。 然而,随着业务的发展和团队规模的扩大,很多公司会选择开发自己的测试平台,以实现更…

基于模糊控制的MATLAB避障算法实现

一、算法原理与系统架构 模糊控制避障通过经验规则替代精确数学模型,适用于动态复杂环境。其核心模块包括:输入变量:障碍物距离、角度偏差、目标方向等隶属函数:将精确量转换为模糊集合(如"近"、"…

为什么网络上搜索不到“桑桥网络”这家公司了?

近期有客户在搜索引擎或社交平台上查找“桑桥网络”时,发现相关信息变少,甚至搜索不到公司官网或品牌资料,于是产生疑问:“桑桥网络是不是不做了?” 答案是:不是公司消失了,而是品牌升级了。桑桥网络已正式更名…

说说上海MNS2.0配电柜批量定制,如何选择厂家?

随着工业自动化与数字化转型的加速,低压配电系统作为企业生产运营的能源心脏,其稳定性、智能化水平直接决定了企业的生产效率与运维成本。MNS2.0配电柜作为新一代智能低压开关设备,已成为众多工业企业升级配电系统的…

2026年阜阳地区,为你分享专业的新能源汽修培训职业学校推荐

本榜单依托全维度市场调研与真实行业口碑,深度筛选出五家标杆职业学校,为学生及家长选型提供客观依据,助力精准匹配适配的职业教育伙伴。 TOP1 推荐:合肥东辰职业学校 推荐指数:★★★★★ | 口碑评分:合肥首推专…

自助KTV加盟哪家服务靠谱,长春鱼乐圈资料汇总

在自助KTV行业竞争愈发激烈的当下,一套成熟的加盟服务体系是创业者降低风险、快速盈利的核心保障。面对市场上鱼龙混杂的自助KTV加盟品牌,如何找到既靠谱又契合自身需求的合作伙伴?以下结合行业痛点与服务能力,为你…

2026年全国实力强的博士留学机构排名推荐,这些企业值得关注

(涵盖博士留学申请、科研背景提升、产学研人才对接等核心服务领域服务商推荐) 2026年全球高等教育竞争持续加剧,博士留学申请已从单一的材料递交升级为学术背景+科研能力+院校资源的综合比拼。无论是梦校offer冲刺、…

2025年成都火锅人气排行:3公里内口碑爆表的十大必吃店,牛肉火锅/麻辣烫/美食/市井火锅nbsp;成都火锅约会地点哪家好吃

成都火锅市场格局分析 作为川渝美食文化的代表,成都火锅市场近年来呈现出多元化发展趋势。根据大众点评、小红书等平台数据显示,方圆3公里范围内的火锅品牌竞争激烈,消费者更倾向于选择口碑优良、品质稳定的火锅品牌…

聊聊2026年别墅外墙砖靠谱厂家,广东和陶家居实力上榜

2026年家居建材行业持续升级,外墙砖作为建筑外立面的核心材料,其品质稳定性、耐候性与美学表现力直接决定建筑的使用寿命与视觉质感。无论是农村自建房的耐用需求、别墅工程的定制,还是新农村项目的批量交付,优质外…

读书笔记三:从需求到交付,坚守软件质量的核心底线

软件开发的最终目标,是交付一款满足用户需求、质量可靠的软件产品。而从需求提出到产品交付的整个过程,每一个环节都关乎软件质量,任何一个环节的疏漏,都可能导致软件缺陷,影响用户体验,甚至导致项目失败。邹欣老…

金属带材环保电镀费用知多少,哪家收费合理?

2026年新能源汽车、3C电子产业爆发式增长,金属带材与精密零部件的电镀工艺成为决定终端产品性能与寿命的关键环节。无论是超薄金属带材的高精度镀金、超厚零部件的耐腐蚀镀镍,还是全链路环保合规的电镀解决方案,优质…

详细介绍:STM32外设学习--DMA直接存储器读取--学习笔记。

详细介绍:STM32外设学习--DMA直接存储器读取--学习笔记。pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

基于STM32的智能宠物监控设计与实现

目录 STM32智能宠物监控系统概述硬件设计软件设计功能实现应用案例扩展方向 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32智能宠物监控系统概述 智能宠物监控系统基于STM32微控制器&#xff0c;结合传感器、摄像头、无线通信模…

基于STM32的智能家居安防系统

目录 STM32智能家居安防系统概述核心功能模块软件设计要点低功耗优化扩展功能典型硬件选型 源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01; STM32智能家居安防系统概述 STM32系列微控制器因其高性能、低功耗和丰富的外设资源&#xff…

基于STM32的智能导盲杖设计与实现

目录硬件设计软件设计电源管理用户交互设计测试与优化源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;硬件设计 STM32微控制器作为核心处理器&#xff0c;通常选用STM32F103系列或STM32F4系列&#xff0c;因其低功耗和高性能特性。主控…

基于STM32的智能楼梯灯系统

目录系统概述硬件组成核心功能软件设计应用场景优势特点源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;系统概述 基于STM32的智能楼梯灯系统是一种结合嵌入式控制与传感器技术的自动化照明解决方案。该系统通过实时监测人体活动&#…

Vue 3 中的具名插槽仍然完全支持,Vue 2 的旧语法 Vue 3 中已废弃

Vue3中具名插槽的使用方式更加统一和简洁。新版本采用v-slot指令&#xff08;简写为#&#xff09;替代Vue2的slot和slot-scope属性&#xff0c;支持默认插槽、具名插槽和作用域插槽。子组件通过name属性定义插槽&#xff0c;父组件使用#插槽名语法插入内容。Vue3还增强了动态插…