【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…...
什么是计算机视觉?计算机视觉:从基础到前沿
引言 计算机视觉,作为人工智能的一个重要分支,致力于赋予机器“看”的能力——即从图像或视频中理解和解释视觉信息的能力。这项技术的发展为自动驾驶汽车、面部识别、机器人导航等多种应用开辟了道路,正在逐步改变我们的工作和生活方式。本…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计
随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...