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

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

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

相关文章

什么是nginx正向代理和反向代理?

什么是代理&#xff1f; 代理(Proxy), 简单理解就是自己做不了的事情或实现不了的功能&#xff0c;委托别人去做。 什么是正向代理&#xff1f; 在nginx中&#xff0c;正向代理指委托者是客户端&#xff0c;即被代理的对象是客户端 在这幅图中&#xff0c;由于左边内网中…

深入浅出Java中高效的ConcurrentLinkedQueue队列底层实现与源码分析

咦咦咦&#xff0c;各位小可爱&#xff0c;我是你们的好伙伴——bug菌&#xff0c;今天又来给大家普及Java SE相关知识点了&#xff0c;别躲起来啊&#xff0c;听我讲干货还不快点赞&#xff0c;赞多了我就有动力讲得更嗨啦&#xff01;所以呀&#xff0c;养成先点赞后阅读的好…

.NET CORE使用Redis分布式锁续命(续期)问题

结合上一期 .NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案(.NET CORE 分布式事务(三) DTM实现Saga及高并发下的解决方案-CSDN博客)。有的小伙伴私信说如果锁内锁定的程序或者资源未在上锁时间内执行完&#xff0c;造成的使用资源冲突&#xff0c;需要如何解决。本…

【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】

1、SPI协议 简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface)&#xff0c;即串行外围设备接口&#xff0c;是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间&#xff0c;要求通讯速率 较高的场合。 SPI 物理层 SPI 通讯…

优化选址问题 | 基于帝国企鹅算法求解工厂-中心-需求点三级选址问题含Matlab源码

目录 问题代码问题 "帝国企鹅算法"并不是一个广为人知的优化算法,可能是一个特定领域或者特定情境下提出的方法。不过,对于工厂-中心-需求点三级选址问题,它可能是一种启发式优化方法,用于在多个候选位置中选择最优的工厂、中心和需求点位置。 这类问题通常涉及…

css3之2D转换transform

2D转换transform 一.移动&#xff08;translate)(中间用&#xff0c;隔开&#xff09;二.旋转&#xff08;rotate)&#xff08;有单位deg)1.概念2.注意点3.转换中心点&#xff08;transform-origin)&#xff08;中间用空格&#xff09;4.一些例子(css三角和旋转&#xff09; 三…

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测

分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测 目录 分类预测 | MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记忆网络多输入分类预测效果一览基本介绍模型搭建程序设计参考资料 效果一览 基本介绍 MATLAB实现BO-CNN-LSTM贝叶斯优化卷积长短期记…

love 2d Lua 俄罗斯方块超详细教程

源码已经更新在CSDN的码库里&#xff1a; git clone https://gitcode.com/funsion/love2d-game.git 一直在找Lua 能快速便捷实现图形界面的软件&#xff0c;找了一堆&#xff0c;终于发现love2d是小而美的原生lua图形界面实现的方式。 并参考相关教程做了一个更详细的&#x…

聊聊多版本并发控制(MVCC)

多版本并发控制&#xff08;MVCC&#xff09; MVCC一直是数据库部分的高频面试题&#xff0c;这篇文章来聊聊MVCC是什么&#xff0c;以及一些底层原理的实现。 当前读和快照读&#xff1a; 当前读&#xff1a;读取的是事务最新的版本&#xff0c;读取的过程中其他并发事务不…

TC16-161T+ 音频 信号变压器 RF Transformers 600kHz-160MHz 射频集成电路 Mini-Circuits

Mini-Circuits是一家全球领先的射频、微波和毫米波元器件及子系统制造商。TC16-161T是Mini-Circuits出产的一款射频IC&#xff08;射频集成电路&#xff09;&#xff0c;具有平衡-不平衡转换器功用。制造商: Mini-Circuits 产品品种: 音频变压器/信号变压器 RoHS…

FA模型切换Stage模型之module的切换

从FA模型切换到Stage模型时&#xff0c;开发者需要将config.json文件module标签下的配置迁移到module.json5配置文件module标签下&#xff0c;具体差异见下列表格。 表1 FA模型module标签与Stage模型module标签差异对比 表2 FA模型metaData和Stage中metadata对比 表3 FA模型me…

计算机视觉的应用27-关于VoVNetV2模型的应用场景,VoVNetV2模型结构介绍

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下计算机视觉的应用27-关于VoVNetV2模型的应用场景&#xff0c;VoVNetV2模型结构介绍。VoVNetV2&#xff08;Visual Object-Driven Representation Learning Network Version 2&#xff09;是一种深度学习模型&#x…

二十四种设计模式与六大设计原则(二):【门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式】的定义、举例说明、核心思想、适用场景和优缺点

接上次博客&#xff1a;二十四种设计模式与六大设计原则&#xff08;一&#xff09;&#xff1a;【策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式】的定义、举例说明、核心思想、适用场景和优缺点-CSDN博客 目录 门面模式【Facade Pattern】 定义 举…

大数据面试专题 -- kafka

1、什么是消息队列&#xff1f; 是一个用于存放数据的组件&#xff0c;用于系统之间或者是模块之间的消息传递。 2、消息队列的应用场景&#xff1f; 主要是用于模块之间的解耦合、异步处理、日志处理、流量削峰 3、什么是kafka&#xff1f; kafka是一种基于订阅发布模式的…

Gitea 的详细介绍

什么是 Gitea&#xff1f; Gitea 是一个开源、轻量级的自托管 Git 服务&#xff0c;它允许用户搭建类似于 GitHub 或 GitLab 的代码托管平台。由于采用 Go 语言开发&#xff0c;Gitea 具有高效的性能和跨平台特性&#xff0c;适合个人开发者或小团队使用。 Gitea 的特点 轻量…

跨越时空,启迪智慧:奇趣相机重塑儿童摄影与教育体验

【科技观察】近期&#xff0c;奇趣未来公司以其创新之作——“奇趣相机”微信小程序&#xff0c;强势进军儿童AI摄影市场。这款专为亚洲儿童量身定制的应用&#xff0c;凭借精准贴合亚洲儿童面部特征的AIGC大模型&#xff0c;以及丰富的摄影模板与场景设定&#xff0c;正在重新…

Python下载bing每日壁纸并实现win11 壁纸自动切换

前言: 爬虫哪家强,当然是python 我是属于啥语言都用,都懂点,不精通,实际工作中能能够顶上就可以。去年写的抓取bing每日的壁纸&#xff0c;保存到本地&#xff0c;并上传到阿里云oss&#xff0c;如果只是本地壁纸切换&#xff0c;存下来就行&#xff0c;一直想做个壁纸站点&…

【AcWing】蓝桥杯集训每日一题Day9|区间合并|1343.挤牛奶(C++)

1343.挤牛奶 1343. 挤牛奶 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 64MB总通过数&#xff1a;4627总尝试数&#xff1a;13242来源&#xff1a;usaco training 1.3算法标签区间合并差分 题目内容 每天早上 5 点&#xff0c;三名农夫去牛场给奶牛们挤奶。 …

springboot程序文件上传集成腾讯云cos

前提&#xff1a;有腾讯云服务器并开通cos对象存储 创建cos存储桶&#xff08;访问权限需要设置为共有读私有写&#xff0c;这样到时上传的文件才可以通过链接访问&#xff09; 创建cos对象存储访问密钥拿到secretId和secretKey 注意创建的密钥一定要保存好后期是无法再次次…

Node.js中Router的使用

文章目录 介绍router的优点1.导入Express和创建Router&#xff1a;2. 定义路由&#xff1a;3.将router暴露到模块外&#xff1a;4. 将Router挂载到Express应用中&#xff1a;4.1.引入router4.2.使用中间件让router在Express应用中生效(三种写法) 5. 完整示例&#xff1a;5.1.编…