C#--核心

CSharp核心知识点学习

学习内容有:

绪论:面向对象的概念

Lesson1:类和对象

练习:

Lesson2:封装--成员变量和访问修饰符

练习:

Lesson3:封装--成员方法

Lesson4:封装--构造函数和析构函数

知识点四 垃圾回收机制--面试常考

练习:

Lesson5:成员属性

练习:

Lesson6:封装--索引器

练习:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson6_练习
{#region 练习//自定义一个整形数组类,该类中有一个整形数组变量//为它封装增删查改的方法class IntArray{private int[] array;//房间容量private int capacity;//当前放了几个房间private int length;public IntArray(){capacity = 5;length = 0;array = new int[capacity];}//增public void Add(int value){//如果要增加就涉及扩容//扩容就涉及"搬家"if(length < capacity){array[length] = value;++length;}//扩容“搬家”else{capacity *= 2;//新房子int[] tempArray = new int[capacity];for (int i = 0; i < array.Length; i++){tempArray[i] = array[i];}//老的房子地址 指向新房子地址array = tempArray;//传入的往后放array[length] = value;++length;}}//删//指定内容删除public void Remove(int value){//找到 传入值 在哪个位置for (int i = 0; i < length; i++){if(array[i] == value){RemoveAt(i);return;}}Console.WriteLine("没有在数组中找到{0}",value);}//指定索引删除public void RemoveAt(int index){if(index > length){Console.WriteLine("当前数组只有{0},你越界了",length);return;}for (int i = index; i < length - 1; i++){array[i] = array[i + 1];}--length;}//查改public int this[int index]{get{if(index >= length || index < 0){Console.WriteLine("越界了");return 0;}return array[index];}set{if (index >= length || index < 0){Console.WriteLine("越界了");}array[index] = value;}}public int Length{get{return length;}}}#endregionclass Program{static void Main(string[] args){Console.WriteLine("索引器练习");IntArray intArray = new IntArray();intArray.Add(1);intArray.Add(2);Console.WriteLine(intArray.Length);//intArray.RemoveAt(1);intArray.Remove(2);Console.WriteLine(intArray[0]);//Console.WriteLine(intArray[1]);Console.WriteLine(intArray.Length);}}
}

Lesson7:封装--静态成员

练习:

Lesson8:封装-- 静态类和静态构造函数

Lesson9:封装--拓展方法

练习:

Lesson10:封装--运算符重载

练习:

Lesson11:封装--内部类和分部类

Lesson12:继承--继承的基本规则

练习:

Lesson13:继承--里氏替换原则

练习:

Lesson14:继承--继承中的构造函数

练习:

Lesson15:继承--万物之父和装箱拆箱

练习:

Lesson16:继承--密封类

练习:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson16_练习
{#region 练习//定义一个载具类//有速度,最大速度,可乘人数,司机和乘客等,有上车,下车,行驶,车祸等方法//用载具类申明一个对象,并将若干人装载上车class Car{public int speed;public int maxSpeed;//当前装了多少人public int num;public Person[] person;public Car(int speed, int maxSpeed, int num){this.speed = speed;this.maxSpeed = maxSpeed;this.num = 0;person = new Person[num];}public void GetIn(Person p){if(num >= person.Length){Console.WriteLine("满载了");return;}person[num] = p;++num;}public void GetOff(Person p){for (int i = 0; i < person.Length; i++){if(person[i] == null){break;}if (person[i] == p){//移动位置for (int j = i; j < num - 1; j++){person[j] = person[j + 1];}//最后一个位置清空person[num - 1] = null;--num;break;}}}public void Move(){}public void Boom(){}}class Person{}class Driver : Person{}class Passenger : Person{}#endregionclass Program{static void Main(string[] args){Console.WriteLine("封装继承综合练习");Car car = new Car(80, 100, 20);Driver driver = new Driver();Passenger p1 = new Passenger();Passenger p2 = new Passenger();Passenger p3 = new Passenger();car.GetIn(driver);car.GetIn(p1);car.GetIn(p2);car.GetIn(p3);car.GetOff(p1);}}
}

练习调试!!!

Lesson17:多态--vob

通过这节课的知识--解决了Lesson13 的练习题

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson13_练习
{#region 练习一//is和as的区别//is 用于判断 类对象判断是不是某个类型的对象  bool//as 用于转换 把一个类对象 转换成一个指定类型的对象  null#endregion#region 练习二//写一个Monster类,它派生出Boss和Gobin两个类//Boss有技能,小怪有攻击//随机生成10个怪,装载到数组中//遍历这个数组,调用他们的攻击方法,如果是boss就释放技能class Monster{}class Boss : Monster{public void Skill(){Console.WriteLine("Boss释放技能");}}class Goblin : Monster{public void Atk(){Console.WriteLine("小怪攻击");}}#endregion#region 练习三//FPS游戏模拟//写一个玩家类,玩家可以拥有各种武器//线在有四种武器,冲锋枪,散弹枪,手枪,匕首//玩家默认拥有匕首//请在玩家类中写一个方法,可以拾取不同的武器替换自己拥有的武器class Weapon{public virtual string Input(){return null;}}/// <summary>/// 冲锋枪/// </summary>class SubmachineGun : Weapon{public override string Input(){return "冲锋枪";//Console.WriteLine("冲锋枪");}}/// <summary>/// 散弹枪/// </summary>class ShotGun : Weapon{public override string Input(){return "散弹枪";//Console.WriteLine("散弹枪");}}/// <summary>/// 手枪/// </summary>class Pistol : Weapon{public override string Input(){return "手枪";//Console.WriteLine("手枪");}}/// <summary>/// 匕首/// </summary>class Dagger : Weapon{public override string Input(){return "匕首";//Console.WriteLine("匕首");}}class Player{private Weapon nowHaveWeapon;public Player(){nowHaveWeapon = new Dagger();}public void PickUp(Weapon weapon){nowHaveWeapon = weapon;}public void Show(){Console.WriteLine("当前玩家使用的武器是:{0}",nowHaveWeapon.Input());}}#endregionclass Program{static void Main(string[] args){Console.WriteLine("里氏替换原则练习");//随机生成10个怪物Monster[] objects = new Monster[10];Random r = new Random();int box = 0;for (int i = 0; i < objects.Length; i++){box = r.Next(1, 3);if(box == 1){objects[i] = new Boss();}else{objects[i] = new Goblin();}}//遍历数组for (int i = 0; i < objects.Length; i++){if(objects[i] is Boss){(objects[i] as Boss).Skill();}else if(objects[i] is Goblin){(objects[i] as Goblin).Atk();}}Player p = new Player();p.Show();Weapon submachineGun = new SubmachineGun();p.PickUp(submachineGun);p.Show();//遗留一个问题:重写?!!//通过学习Lesson17--多态ovb    得以解决}}
}

练习:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson17_练习
{#region 练习一//真的鸭子嘎嘎叫,木头鸭子吱吱叫,橡皮鸭子唧唧叫class Duck{public virtual void Speak(){Console.WriteLine("嘎嘎叫");}}class WoodDuck : Duck{public override void Speak(){//base.Speak();Console.WriteLine("吱吱叫");}}class RubberDuck : Duck{public override void Speak(){//base.Speak();Console.WriteLine("唧唧叫");}}#endregion#region 练习二//所有员工9点打卡//但经理十一点打卡,程序员不打卡class Staff{public virtual void PunchTheClock(){Console.WriteLine("普通员工9点打卡");}}class Manager : Staff{public override void PunchTheClock(){//base.PunchTheClock();Console.WriteLine("经理11点打卡");}}class Programmer : Staff{public override void PunchTheClock(){//base.PunchTheClock();Console.WriteLine("程序员不打卡");}}#endregion#region 练习三//创建一个图形类,有求面积和周长两个方法//创建矩形类,正方形类,圆形类继承图形类//实例化矩形,正方形,圆形对象求面积和周长class Graph{public virtual float GetLength(){return 0;}public virtual float GetArea(){return 0;}}class Rect : Graph{private float w;private float h;public Rect(float w, float h){this.w = w;this.h = h;}public override float GetLength(){//return base.GetLength();return 2 * (w + h);}public override float GetArea(){//return base.GetArea();return w * h;}}class Square : Graph{private float h;public Square(float h){this.h = h;}public override float GetLength(){//return base.GetLength();return 4 * h;}public override float GetArea(){//return base.GetArea();return h * h;}}class Circule : Graph{private float r;public Circule(float r){this.r = r;}public override float GetLength(){//return base.GetLength();return 2 * 3.14F * r;}public override float GetArea(){//return base.GetArea();return 3.14f * r * r;}}#endregionclass Program{static void Main(string[] args){Console.WriteLine("多态ovb");Console.WriteLine("virtual   override   base");Duck d = new Duck();d.Speak();Duck wd = new WoodDuck();wd.Speak();Duck rd = new RubberDuck();rd.Speak();Staff s = new Staff();s.PunchTheClock();Staff ma = new Manager();ma.PunchTheClock();(ma as Manager).PunchTheClock();Staff pr = new Programmer();(pr as Programmer).PunchTheClock();Rect r = new Rect(2, 4);Console.WriteLine("矩形的周长是:" + r.GetLength());Console.WriteLine("矩形的面积是:" + r.GetArea());Square sq = new Square(4);Console.WriteLine("正方形的周长是:" + sq.GetLength());Console.WriteLine("正方形的面积是:" + sq.GetArea());Circule ci = new Circule(3);Console.WriteLine("圆的周长是:" + ci.GetLength());Console.WriteLine("圆的面积是:" + ci.GetArea());}}
}

Lesson18:多态--抽象类和抽象方法

练习:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson18_练习
{#region 练习一//写一个动物抽象类,写三个子类//人叫、狗叫、猫叫abstract class Animal{public abstract void Speak();}class Person : Animal{public override void Speak(){Console.WriteLine("人在说话");}}class Dog : Animal{public override void Speak(){Console.WriteLine("狗在汪汪叫");}}class Cat : Animal{public override void Speak(){Console.WriteLine("猫在喵喵叫");}}#endregion#region 练习二//创建一个图形类,有求面积和周长两个方法//创建矩形类,正方形类,圆形类继承图形类//实例化矩形,正方形,圆形对象求面积和周长abstract class Graph{public abstract float GetLength();public abstract float GetArea();}class Rect : Graph{private float w;private float h;public Rect(float w, float h){this.w = w;this.h = h;}public override float GetLength(){//return base.GetLength();return 2 * (w + h);}public override float GetArea(){//return base.GetArea();return w * h;}}class Square : Graph{private float h;public Square(float h){this.h = h;}public override float GetLength(){//return base.GetLength();return 4 * h;}public override float GetArea(){//return base.GetArea();return h * h;}}class Circule : Graph{private float r;public Circule(float r){this.r = r;}public override float GetLength(){//return base.GetLength();return 2 * 3.14F * r;}public override float GetArea(){//return base.GetArea();return 3.14f * r * r;}}#endregionclass Program{static void Main(string[] args){Console.WriteLine("抽象类和抽象方法");Person p = new Person();p.Speak();Dog dog = new Dog();dog.Speak();Animal cat = new Cat();cat.Speak();}}
}

Lesson19:多态--接口

练习:重要,加深对接口的应用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Lesson19_练习
{#region 练习一//人、汽车、房子都需要登记,人需要到派出所登记,汽车需要去车管所登记,房子需要去房管局登记//使用接口实现登记方法interface IRegister{void Register();}class Person : IRegister{public void Register(){Console.WriteLine("派出所登记");}}class Car : IRegister{public void Register(){Console.WriteLine("车管所登记");}}class Home : IRegister{public void Register(){Console.WriteLine("房管局登记");}}#endregion#region 练习二//麻雀、鸵鸟、企鹅、鹦鹉、直升机、天鹅//直升机和部分鸟能飞//鸵鸟和企鹅不能飞//企鹅和天鹅能游泳//除直升机,其他都能走//请用面向对象相关知识实现abstract class Bird{public abstract void Walk();}interface IFly{void Fly();}interface ISwimming{void Swimming();}//麻雀class Sparrow : Bird,IFly{public void Fly(){}public override void Walk(){}}//鸵鸟class Ostrich : Bird{public override void Walk(){}}//企鹅class Penguin : Bird,ISwimming{public void Swimming(){throw new NotImplementedException();}public override void Walk(){}}//鹦鹉class Parrot : Bird,IFly{public void Fly(){throw new NotImplementedException();}public override void Walk(){}}//天鹅class Swan : Bird,IFly,ISwimming{public void Fly(){throw new NotImplementedException();}public void Swimming(){throw new NotImplementedException();}public override void Walk(){}}//直升机class Helicopter : IFly{public void Fly(){throw new NotImplementedException();}}#endregion#region 练习三//多态来模拟移动硬盘、U盘、MP3插到电脑上读取数据//移动硬盘与U盘都属于存储设备//MP3属于播放设备//但他们都能插在电脑上传输数据//电脑提供一个USB接口//请实现电脑的传输数据的功能interface IUSB{void ReadData();}class StorageDevice : IUSB{public string name;public StorageDevice(string name){this.name = name;}public void ReadData(){Console.WriteLine("{0}传输数据",name);}}class MP3 : IUSB{public void ReadData(){Console.WriteLine("MP3传输数据");}}class Computer{public IUSB usb1;}#endregionclass Program{static void Main(string[] args){Console.WriteLine("接口练习");IRegister p = new Person();p.Register();Car car = new Car();car.Register();Home home = new Home();home.Register();StorageDevice hd = new StorageDevice("移动硬盘");StorageDevice ud = new StorageDevice("U盘");MP3 mp3 = new MP3();Computer cp = new Computer();cp.usb1 = hd;cp.usb1.ReadData();cp.usb1 = ud;cp.usb1.ReadData();cp.usb1 = mp3;cp.usb1.ReadData();}}
}

Lesson20:多态--密封方法

Lesson21:面向对象相关--命名空间

练习:

Lesson22:面向对象相关--万物之父中的方法

练习:

Lesson23:面向对象相关--string

练习:

Lesson24:面向对象相关--StringBuilder

练习:

Lesson25:面向对象相关--结构体和类的区别

Lesson26:面向对象相关--抽象类和接口的区别

学习完成:

CSharp核心实践小项目见下一篇笔记!

牢记--多看!!!

你还有好多东西要学习呢,抓紧时间啊!!!

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

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

相关文章

OpenCV——图像按位运算

目录 一、算法概述1、逻辑运算2、函数解析3、用途 二、代码实现三、结果展示 OpenCV——图像按位运算由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、算法概述 1、逻辑运算 OpenCV4 针对两个图像之…

查看服务器的yum 源

1、cd /etc/yum.repos.d 2、编辑 CentOS-Stream-Sources.repo 3、 查看里面的yum源地址 4、更新yum源&#xff0c;执行下面指令 yum clean all # 清除系统所有的yum缓存 yum makeacache # 生成新的yum缓存 yum repolist

SQL-用户管理与用户权限

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

Qt/QML编程之路:Grid、GridLayout、GridView、Repeater(33)

GRID网格用处非常大,不仅在excel中,在GUI中,也是非常重要的一种控件。 Grid 网格是一种以网格形式定位其子项的类型。网格创建一个足够大的单元格网格,以容纳其所有子项,并将这些项从左到右、从上到下放置在单元格中。每个项目都位于其单元格的左上角,位置为(0,0)。…

Ubuntu共享文件到win

Ubuntu共享文件到win 1、安装samba sudo apt-get install samba samba-common2、创建一个共享文件夹&#xff0c;并设置777权限 mkdir /home/qyh/share sudo chmod 777 /home/qyh/share我的用户名&#xff1a;qyh。 3、添加用户及密码 sudo smbpasswd -a qyh4、修改配置文…

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…

【C++】“Hello World!“

&#x1f984;个人主页:修修修也 &#x1f38f;所属专栏:C ⚙️操作环境:Visual Studio 2022 ​ 2024.1.14 纪念一下自己编写的第一个C程序 #include<iostream>int main() {/*我的第一个C程序*/std::cout << "Hello world!:>" <<std::endl;ret…

蓝桥杯备赛 | 洛谷做题打卡day3

蓝桥杯备赛 | 洛谷做题打卡day3 sort函数真的很厉害&#xff01; 文章目录 蓝桥杯备赛 | 洛谷做题打卡day3sort函数真的很厉害&#xff01;【深基9.例1】选举学生会题目描述输入格式输出格式样例 #1样例输入 #1 样例输出 #1 我的一些话 【深基9.例1】选举学生会 题目描述 学校…

腾讯云主机价格表和优惠活动汇总(2024年更新)

腾讯云服务器租用价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器446元一年、646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年…

Javaweb之SpringBootWeb案例新增部门的详细解析

2.3 删除部门 查询部门的功能我们搞定了&#xff0c;下面我们开始完成删除部门的功能开发。 2.3.1 需求 点击部门列表后面操作栏的 "删除" 按钮&#xff0c;就可以删除该部门信息。 此时&#xff0c;前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也…

致远OA getAjaxDataServlet XXE漏洞复现(QVD-2023-30027)

0x01 产品简介 致远互联-OA 是数字化构建企业数字化协同运营中台,面向企业各种业务场景提供一站式大数据分析解决方案的协同办公软件。 0x02 漏洞概述 致远互联-OA getAjaxDataServlet 接口处存在XML实体注入漏洞,未经身份认证的攻击者可以利用此漏洞读取系统内部敏感文件…

EasyExcel简单实例

EasyExcel简单实例 准备工作场景一&#xff1a;读取 Student 表需求1&#xff1a;简单读取需求2&#xff1a;读取到异常信息时不中断需求3&#xff1a;读取所有的sheet工作表需求4&#xff1a;读取指定的sheet工作表需求5&#xff1a;从指定的行开始读取 场景二&#xff1a;写入…

vue3中ref和reactive联系与区别以及如何选择

vue3中ref和reactive区别与联系 区别 1、ref既可定义基本数据类型&#xff0c;也可以定义引用数据类型&#xff0c;reactive只能定义应用数据类型 2、ref在js中取响应值需要使用 .value&#xff0c;而reactive则直接取用既可 3、ref定义的对象通过.value重新分配新对象时依旧…

Web3去中心化存储:重新定义云服务

随着Web3技术的崭露头角&#xff0c;去中心化存储正在成为数字时代云服务的全新范式。传统的云服务依赖于中心化的数据存储架构&#xff0c;而Web3的去中心化存储则为用户带来了更安全、更隐私、更可靠的数据管理方式&#xff0c;重新定义了云服务的未来。 1.摒弃中心化的弊端 …

如何在 openKylin 上安装 ONLYOFFICE 文档?

文章作者&#xff1a;ajun ONLYOFFICE 文档是一款全面的在线办公工具&#xff0c;提供了文本文档、电子表格和演示文稿的查看和编辑功能。它高度兼容微软 Office 格式&#xff0c;包括 .docx、.xlsx 和 .pptx 等文件格式&#xff0c;并支持实时协作编辑&#xff0c;使团队成员能…

边缘计算AI智能分析网关V4算力分析及应用场景

一、硬件介绍 智能分析网关V4是TSINGSEE青犀视频推出的一款高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;硬件采用BM1684芯片&#xff0c;集成高性能8核ARM A53&#xff0c;主频高达2.3GHz。硬件内置近40种AI算法模型&#xff0c;支持对接入的视频图像进行人、车、…

SQL:一行中存在任一指标就显示出来

当想要统计的两个指标不在一张表中时&#xff0c;需要做关联。但很多情况下&#xff0c;也没有办法保证其中一张表的维度是全的&#xff0c;用left join或right join可能会导致数据丢失。所以借助full join处理。 1&#xff09;如&#xff0c;将下面的数据处理成表格中的效果&…

基于springboot生鲜交易系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包括软件架构模式、整体功能模块、数据库设计。本项…

Spring Boot 3 + Vue 3实战:实现用户登录功能

文章目录 一、实战概述二、实战步骤​&#xff08;一&#xff09;创建前端项目 - login-vue1、创建Vue项目2、安装axios模块3、安装vue-router模块4、安装less和less-loader模块5、运行Vue项目6、在浏览器里访问首页7、在IDEA里打开Vue项目8、创建登录Vue组件9、创建首页Vue组件…

rime中州韵小狼毫 词组注释 滤镜

教程目录&#xff1a;rime中州韵小狼毫须鼠管安装配置教程 保姆级教程 100增强功能配置教程 在rime中州韵小狼毫 联想词组 滤镜一文中&#xff0c;我们通过Filter滤镜功能配置了联想词组的功能&#xff0c;这使得我们在输入一些关键词汇时&#xff0c;可以联想补充一些附加的词…