【C#】知识点速通
前言:
笔者是跟着哔站课程(Trigger)学习unity才去学习的C#,并且C语言功底尚存,所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解,然后在后期unity学习过程中加以深度学习。如需完善的C#知识,推荐CSDN博主:呆呆敲代码的小Y - 链接: link
具体学习部分如下,建议将后面的源代码复制到vs打开后按顺序查看,其中EP标注的是笔者的课程集数
需要用到哪个部分取消该部分定义及Main语句里的注释即可,部分内容有所串通,不使用时重新注释,防止调试时出现问题
所有内容只需要简单搜索就可以找到解释
其中比较重要的部分是public,static等的理解,以及父子集的运用,推荐还是跟着课程学习为好

#region 和 #endregion 是用来分区的,便于找到所需部分,不用该部分时,可以点击 #region 左边的箭头进行缩略


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Serialization;//快捷键
//Tab 一键补齐
//cw+Tab Console.WriteLine的快速输入
namespace c__Project_3_28
{internal class Program{#region EP6 函数static void RecoverPlayerHP(){Console.WriteLine("玩家血量回复了");}static int Add(){int a = 1 + 1;return a;}#endregion#region EP7 结构体public struct Role{public string name;public int level;public int HP;}#endregion#region EP7 枚举public enum OCCUPATION{WARRIOR,//战士MASTER,//法师SHOOTER,//射手ASSASSIN,//刺客ASSIST//辅助}#endregion#region EP8 面向对象、类public class Bussinessman{private string name;public int money;public int goods;public Bussinessman(){}public Bussinessman(string bName, int bMoney, int bGoods){name = bName;money = bMoney;goods = bGoods;Console.WriteLine("当前商人的名字是:" + name);}public void SetName(string bName,int bMoney,int bGoods){name = bName;money = bMoney;goods = bGoods;Console.WriteLine("当前商人的名字是:" + name);}public void Buygoods(string otherName){Console.WriteLine("当前" + name + "买了" + otherName + "的东西");money--;Console.WriteLine("当前" + name + "还剩" + money+"枚金币");}public void Sellgoods(){Console.WriteLine();}}#endregion#region EP10 继承public class Monster{public string name;public int hp;public virtual void Attack(){//this.hp--;Console.WriteLine("普通攻击");}}public class Boss : Monster{public override void Attack(){base.Attack();Console.WriteLine("放技能");}}#endregion#region EP11 属性public class Trigger{private int money;//ctrl+r -> ctrl+e - 自动生成//public int Money { get => money; private set => money = value; }public int Money{get { return money; }//可访问但不可修改set { money = value; }//更改值,但加上 private 就仅在内部//value 引用客户端代码尝试分配给属性的值}private void SendMoney(){Money--;}}#endregion#region EP11 接口public class Drink //:IAddSuger{//public void AddSuger()//{//}}public class Milk : Drink, IAddSuger//一旦使用接口,必须调用{public int cost;//用在数组public void AddSuger(){}}public class Coffee : Drink, IAddSuger{public void AddSuger(){}}public class soup : Drink, IAddSuger, IAddSalt{public void AddSuger(){}public void AddSalt(){}}public interface IAddSuger//接口一般是public类型{void AddSuger();//接口内部默认public类型,不需要额外添加}public interface IAddSalt{void AddSalt();}#endregion#region EP12 数据类型#region EP12 数组static int[] nums;static string[] strs;#endregion#region EP12 列表static List<int> numlist;private static string name;#endregion#region EP12 栈#endregion#region EP12 队列#endregion#region EP12 字典#endregion#endregion#region EP13 静态与非静态public class Tool1{public int toolNum;public void StartGame()//非静态化{}}public class Tool2{public static int toolNum;public static void StartGame()//静态化{}}public class Person{}#endregion#region EP13 设计模式public class GameManager{public bool gameOver;//布尔值默认 falsepublic static GameManager instance{get;set;}//instance是变量名}public class GameMusic{public GameManager gameManager;public void PlayMusic(){//if(!gameManager.gameOver)//{// Console.WriteLine("正常播放游戏音乐");//}//else//{// Console.WriteLine("退出游戏");//}if(!GameManager.instance.gameOver){Console.WriteLine("正常播放游戏音乐");}}}public class GameController{public GameManager gameManager;public void PerformGameLogic(){//if(!gameManager.gameOver)//{// Console.WriteLine("正常执行游戏逻辑");//}//else//{// Console.WriteLine("退出游戏");//}if (!GameManager.instance.gameOver){Console.WriteLine("正常执行游戏逻辑");}}}#endregion#region Mainstatic void Main(string[] args){#region EP7 结构体//Role role1;//role1.name = "xiaoyan";//role1.level = 1;//role1.HP = 10;//Role role2;//role2.name = "wanglong";//role2.level = 2;//role2.HP = 20;#endregion#region EP7 枚举//OCCUPATION hero1 = OCCUPATION.WARRIOR;#endregion#region EP8 面向对象、类//Bussinessman xiaoming = new Bussinessman();//xiaoming.Buygoods();//xiaoming.goods = 10;//Bussinessman bussinessman1 = new Bussinessman();//bussinessman1.SetName("小明", 100, 10);//Bussinessman bussinessman2 = new Bussinessman();//bussinessman2.SetName("小红", 1000, 100);//bussinessman1.Buygoods("小红");#endregion#region EP10 继承//Monster monster = new Monster();//monster.hp = 100;//Boss boss = new Boss();//boss.hp = 100;//monster.Attack();//boss.Attack();//Monster monster = new Boss();//父类声明子类实例化 - 行//monster.Attack();//Boss boss = new Monster();//子类声明父类实例化 - 不行//Monster monster = null;//未将对象引用到设置实例 - 错误//monster.Attack();#endregion#region EP11 属性//Trigger tri = new Trigger();//Console.WriteLine(tri.Money);#endregion#region EP11 接口//Milk milk = new Milk();//IAddSuger drink = new Drink();//当父类对应接口时可实现//drink.AddSuger();#endregion#region EP12 数据类型#region EP12 数组 //nums = new int[] { 1, 3, 5, 7, 9 };//数组长度在初始化时已经固定//Console.WriteLine(nums[0]);//Console.WriteLine(nums[3]);//Console.WriteLine(nums.Length);//Length - 计算数组长度//nums = new int[2];//会产生覆盖//nums[0] = 1;//nums[1] = 2;//Console.WriteLine(nums[1]);遍历//for (int i = 0; i < nums.Length; i++)//{// Console.WriteLine(nums[i]);//}//strs = new string[] { "s", "JohnKi" };//Console.WriteLine(strs[1]);//Milk[] milks = new Milk[]//{// new Milk(){cost = 10},// new Milk()//};#endregion#region EP12 列表//numlist = new List<int>();//numlist.Add(3);//Add - 加入到列表的方法名//numlist.Add(9);//numlist.Add(7);//Console.WriteLine(numlist[1]);//3//Console.WriteLine(numlist.Count);//3//numlist.Remove(9);//Remove - 移除哪一个元素//Console.WriteLine(numlist.Count);//2//numlist.RemoveAt(0);//RemoveAt - 移除哪一个下标的元素//Console.WriteLine(numlist.Count);//1//Console.WriteLine(numlist[0]);//7//numlist.Clear();//Clear - 全屏清空//Console.WriteLine(numlist.Count);//0//List<Monster> monstersList = new List<Monster>()//Monster 自定义类型(继承)//{// new Monster() { },// new Monster() { }//};//Console.WriteLine(monstersList.Count);//2#endregion#region EP12 栈//新进后出//Stack<Trigger> triggerStack = new Stack<Trigger>();//Trigger - 来自属性//triggerStack.Push(new Trigger() { Money = 10});//Push - 压栈//triggerStack.Push(new Trigger() { Money = 1});//Console.WriteLine(triggerStack.Count);//2//Trigger t = triggerStack.Pop();//Pop - 弹出//Console.WriteLine(t.Money);//1//Console.WriteLine(triggerStack.Count);//1#endregion#region EP12 队列//Queue<int> numsQueue = new Queue<int>();//numsQueue.Enqueue(1);//入队//numsQueue.Enqueue(2);//Console.WriteLine(numsQueue.Count);//队列长度//int n = numsQueue.Dequeue();//出队//Console.WriteLine(n);#endregion#region EP12 字典键、值 - 键值对键和值可以为任意类型,只需一一对应//Dictionary<int, Monster> monsterDict1 = new Dictionary<int, Monster>();键为整形,值为自定义类型Monster//monsterDict1.Add(1, new Monster() { name = "李白" });//添加字典键和值//monsterDict1.Add(2, new Monster() { name = "貂蝉" });//Console.WriteLine(monsterDict1[1].name);//Dictionary<string, Monster> monsterDict2 = new Dictionary<string, Monster>();键为字符型,值为自定义类型Monster//monsterDict2.Add("李白", new Monster() { hp = 100 });//monsterDict2.Add("貂蝉", new Monster() { hp = 80 });//Console.WriteLine(monsterDict2["貂蝉"].hp);遍历//foreach (var item in monsterDict2)//{// Console.WriteLine(item.Key);//键//}//foreach (var item in monsterDict2)//{// Console.WriteLine(item.Value);//值//}//foreach (var item in monsterDict2)//{// Console.WriteLine(item.Value.hp);//值//}#endregion#endregion#region EP13 静态与非静态当StartGame没有设置为全局变量时,通过创建的变量名调用//Tool1 tool1 = new Tool1();//tool1.StartGame();//Console.WriteLine(tool1.toolNum);当StartGame设置为全局变量时,直接通过类型名调用//Tool2.StartGame();//Console.WriteLine(Tool2.toolNum);#endregion#region EP13 设计模式GameManager gameManager = new GameManager();GameMusic gameMusic = new GameMusic();gameMusic.gameManager = gameManager;GameController gameController = new GameController();gameController.gameManager = gameManager;//gameManager.gameOver = false;GameManager.instance = new GameManager();GameManager.instance.gameOver = false;gameMusic.PlayMusic();gameController.PerformGameLogic();#endregionConsole.ReadKey();}#endregion}
}
相关文章:
【C#】知识点速通
前言: 笔者是跟着哔站课程(Trigger)学习unity才去学习的C#,并且C语言功底尚存,所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解,然后在后期unity学习过程中加以深度学习。如需完善的C#知识…...
FTP协议
FTP协议 客户端向服务器发送文件。 C/S架构。 运行在TCP/IP协议上面。 FTP客户端要和FTP服务端建立两个TCP连接。 控制连接:运行在整个连接过程,传输控制信息。 数据连接:在每次文件传输时才会建立,文件传输完就关闭。 主动模式…...
前后端分离开发【Yapi平台】【Swagger注解自动生成接口文档平台】
前后端分离开发 介绍开发流程Yapi(api接口文档编写平台)介绍 Swagger使用方式1). 导入knife4j的maven坐标2). 导入knife4j相关配置类3). 设置静态资源映射4). 在LoginCheckFilter中设置不需要处理的请求路径 查看接口文档常用注解注解介绍 当前项目中&am…...
Android的硬件接口HAL-2 HIDL
没写完哈。 不说废话,直接上干活。 1 创建HAL mkdir -p vendor/fanged/hidltest/1.0/defaultvi vendor/fanged/hidltest/1.0/Ilovefanged.hal package vendor.fanged.hardware.hidltest1.0;interface Ilovefanged {add(int32_t a, int32_t b) generates (int32_t…...
pygame--坦克大战(二)
加载敌方坦克 敌方坦克的方向是随机的,使用随机数生成。 初始化敌方坦克。 class EnemyTank(Tank):def __init__(self,left,top,speed):self.images = {U: pygame.image.load(img/enemy1U.gif),D: pygame.image.load(img/enemy1D.gif),L: pygame.image.load(img/enemy1L.gi…...
【C语言】标准输入/输出(printf, scanf, gets, puts, getchar, putchar)
标准文件文件指针设备标准输入stdin键盘标准输出stdout屏幕标准错误stderr您的屏幕 标准输入/输出的函数在标准库stdio.h。 #include <stdio.h> 1、printf 输出 printf :格式化输出,输出到标准输出stdout中。 printf: int print…...
C、C++、C#中.vscode下json文件记录
C launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"name": &quo…...
2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序
2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现: 随着互联网的发展,流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好,自动推荐并播放其它音乐。由于每个人喜好…...
使用ARCore深度API实现点云采集
一、深度API 本小节内容摘自ARCore官方文档。 ARCore 深度API Depth API 可助力实现对象遮挡、提升沉浸感和新颖的互动体验,从而增强 AR 体验的真实感。 在下图中,右侧画面是采用深度API进行遮挡后的效果,与左侧图相比更加真实。 深度值 给…...
软考数据库
目录 分值分布1. 事务管理1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别: 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 2. SQL语言发权限收权限视图触发器…...
Echarts 自适应宽高,或指定宽高进行自适应
文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长,形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素,然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…...
体验报告:为什么Claude-3是码农和学者的新宠?
在这个充斥着海量信息的新时代,人工智能的飞速发展带来了翻天覆地的变化。特别是在编程、学术探索以及专业文案创作等领域,AI的助力显得格外关键。最近,我有机会尝试了一种革命性的人工智能工具——Claude-3,其表现令我震惊&#…...
接口自动化框架搭建(九):接入钉钉消息通知
1,jenkins安装钉钉插件 2,在钉钉群聊设置机器人 3,jenkins配置钉钉 根据情况选择: 除了这些,其他不用配置,配置完成点击确认 4,项目配置 添加后保存 5,测试下效果 构建完成后&a…...
一、点击视频下载(通过视频url实现);二、点击下载视频按钮,视频以压缩包形式下载(但未实现压缩视频)
一、点击视频下载(通过视频url实现) <div class"video-list" v-for"(item,index) in videoList" :key"index"><span class"video-title" >{{item.title}}</span><span class"video-…...
B树、B+树、哈夫曼树
目录 1. B树2. B树3. 哈夫曼树 1. B树 特点:一个节点当中可以有多个值,节点内部key 值是有序的,节点内部存储的是key-value类型的数据 磁盘中文件存储用B树。 4阶B树一个节点最多三个key值 5阶B树一个节点最多四个key值 B树有很多的分支&…...
评价指标_Precision(精确率)、Recall(召回率)和Accuracy(准确率)区别和联系
Precision(精确率)、Recall(召回率)和Accuracy(准确率)是机器学习和信息检索领域常用的评价指标,它们用于评估分类器或检索系统的性能,但各自关注的方面略有不同。 Precision&#x…...
【React】React AJAX
在React中使用AJAX(Asynchronous JavaScript and XML)是一种常见的做法,用于从服务器获取数据并在组件中显示。尽管AJAX的名字中包含了XML,但现在更多地使用JSON(JavaScript Object Notation)作为数据交换格…...
vue 移动端弹窗带滚动效果 滚动到底的时候弹窗下的页面会跟着滑动
<template><div class"wrap" :style"dynamicStyle"><!--dynamicStyle主要是介个 通过computed设置postion的值 弹窗的时候设置为fixed 关闭弹窗的时候设置为unset--><div class"banner-wrap"><img src"/assets/…...
Linux-3 yum和vim
目录 本节目标: Linux 软件包管理器 yum 什么是软件包 1.yum是什么?软件包? 2.Linux(centos)的生态 3.yum的相关操作 我怎么知道我应该安装什么软件? 4.yum的本地配置 关于 rzsz 查看软件包 Linux编辑器-vim使用 1.v…...
什么是计算机视觉?计算机视觉:从基础到前沿
引言 计算机视觉,作为人工智能的一个重要分支,致力于赋予机器“看”的能力——即从图像或视频中理解和解释视觉信息的能力。这项技术的发展为自动驾驶汽车、面部识别、机器人导航等多种应用开辟了道路,正在逐步改变我们的工作和生活方式。本…...
如何用FanControl在5分钟内解决Windows风扇噪音问题?
如何用FanControl在5分钟内解决Windows风扇噪音问题? 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/…...
AI大模型面试题:模型求解和优化全解析——梯度下降、BGD、SGD、MBGD、学习率、Batch Size、损失函数、优化器一文讲透
导读:这篇文章按真实面试回答顺序来讲,重点覆盖损失函数、梯度下降、BGD/SGD/MBGD、负梯度方向、常见优化难题、Batch Size、学习率以及 Adam / Momentum 等常见优化器。全文尽量不用复杂公式,而是用直觉、图示和工程经验把问题说明白。1. 什…...
保姆级对比:ESP32 vs ESP8266,在ROS Melodic/Noetic下谁的WiFi通信更稳?实测代码分享
ESP32与ESP8266在ROS环境下的WiFi通信深度评测:从硬件差异到实战优化 1. 硬件架构与性能基准 当我们将ESP32和ESP8266这两款WiFi模块置于ROS机器人开发环境中对比时,首先需要理解它们的硬件设计差异如何影响实际性能表现。ESP32采用双核Xtensa LX6架构&a…...
xAI解散并入SpaceX,马斯克AI战略转向卖算力,太空AI之梦能否实现?
一、败者食尘xAI解散了?马斯克的Grok难道要凉凉?最近几天,这则新闻在科技圈里刷屏了,消息来源就是马斯克本人,他在社交账号上公布消息称,“xAI将解散并停止作为独立公司运营,会并入SpaceX AI&am…...
终极免费方案:ctfileGet一键破解城通网盘下载限速
终极免费方案:ctfileGet一键破解城通网盘下载限速 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 还在为城通网盘下载速度慢如蜗牛而烦恼吗?下载一个大文件要等上好几个小时&…...
全中文编程:豆包 AI居然会写单片机程序
AI时代,我写了一段全中文的程序:请写一个STC8H8K单片机的程序,要求连接在P0端口的八个LED灯左边四个与右边四个交替闪烁然后豆包AI 给了我下面的结果。我想问大家三个问题:(1)上面那段话算不算是一个全中文…...
WechatDecrypt:3步快速解密微信聊天记录的终极指南
WechatDecrypt:3步快速解密微信聊天记录的终极指南 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 还在为无法查看加密的微信聊天记录而烦恼吗?WechatDecrypt是一款专业的微信消息…...
TypeScript 泛型详解:定义、使用、特点优势、泛型约束与泛型数据类型
在 TypeScript 开发中,泛型是实现类型复用、类型安全、解耦代码的核心特性,能够告别 any 类型带来的类型丢失问题,让组件、函数、数据类型具备适配多类型且保留类型校验的能力。本文按照规范代码缩进、命名、空格、格式书写风格,全…...
Windows HEIC缩略图终极指南:3分钟让iPhone照片在资源管理器完美预览
Windows HEIC缩略图终极指南:3分钟让iPhone照片在资源管理器完美预览 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC/HEIF files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails …...
RT-Thread开发实战(8)— 基于SPI驱动TFTLCD实现动态数据可视化
1. 从零开始玩转SPI驱动TFTLCD 第一次用RT-Thread驱动TFTLCD屏幕时,我盯着那堆密密麻麻的引脚直发懵。后来才发现,只要搞明白SPI通信和屏幕驱动芯片的关系,这事儿其实比想象中简单多了。我们这次要对付的是ST7789V2这款驱动芯片,它…...
