当前位置: 首页 > news >正文

【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#】知识点速通

前言&#xff1a; 笔者是跟着哔站课程&#xff08;Trigger&#xff09;学习unity才去学习的C#&#xff0c;并且C语言功底尚存&#xff0c;所以只是简单地跟着课程将unity所用的C#语言的关键部分进行了了解&#xff0c;然后在后期unity学习过程中加以深度学习。如需完善的C#知识…...

FTP协议

FTP协议 客户端向服务器发送文件。 C/S架构。 运行在TCP/IP协议上面。 FTP客户端要和FTP服务端建立两个TCP连接。 控制连接&#xff1a;运行在整个连接过程&#xff0c;传输控制信息。 数据连接&#xff1a;在每次文件传输时才会建立&#xff0c;文件传输完就关闭。 主动模式…...

前后端分离开发【Yapi平台】【Swagger注解自动生成接口文档平台】

前后端分离开发 介绍开发流程Yapi&#xff08;api接口文档编写平台&#xff09;介绍 Swagger使用方式1). 导入knife4j的maven坐标2). 导入knife4j相关配置类3). 设置静态资源映射4). 在LoginCheckFilter中设置不需要处理的请求路径 查看接口文档常用注解注解介绍 当前项目中&am…...

Android的硬件接口HAL-2 HIDL

没写完哈。 不说废话&#xff0c;直接上干活。 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 &#xff1a;格式化输出&#xff0c;输出到标准输出stdout中。 printf&#xff1a; int print…...

C、C++、C#中.vscode下json文件记录

C launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"name": &quo…...

2013年认证杯SPSSPRO杯数学建模B题(第二阶段)流行音乐发展简史全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 B题 流行音乐发展简史 原题再现&#xff1a; 随着互联网的发展&#xff0c;流行音乐的主要传播媒介从传统的电台和唱片逐渐过渡到网络下载和网络电台等。网络电台需要根据收听者的已知喜好&#xff0c;自动推荐并播放其它音乐。由于每个人喜好…...

使用ARCore深度API实现点云采集

一、深度API 本小节内容摘自ARCore官方文档。 ARCore 深度API Depth API 可助力实现对象遮挡、提升沉浸感和新颖的互动体验&#xff0c;从而增强 AR 体验的真实感。 在下图中&#xff0c;右侧画面是采用深度API进行遮挡后的效果&#xff0c;与左侧图相比更加真实。 深度值 给…...

软考数据库

目录 分值分布1. 事务管理1.1 事物的基本概念1.2 数据库的并发控制1.2.1 事务调度概念1.2.2 并发操作带来的问题1.2.3 并发控制技术1.2.4 隔离级别&#xff1a; 1.3 数据库的备份和恢复1.3.1 故障种类1.3.2 备份方法1.3.3 日志文件1.3.4 恢复 2. SQL语言发权限收权限视图触发器…...

Echarts 自适应宽高,或指定宽高进行自适应

文章目录 需求分析 需求 有一个按钮实现对Echarts的指定缩放与拉长&#xff0c;形成自适应效果 拉长后效果图 该块元素缩短后效果图 分析 因为我习惯使用 ref 来获取组件的 DOM 元素&#xff0c;然后进行挂载 <div ref"echartsRef" id"myDiv" :sty…...

体验报告:为什么Claude-3是码农和学者的新宠?

在这个充斥着海量信息的新时代&#xff0c;人工智能的飞速发展带来了翻天覆地的变化。特别是在编程、学术探索以及专业文案创作等领域&#xff0c;AI的助力显得格外关键。最近&#xff0c;我有机会尝试了一种革命性的人工智能工具——Claude-3&#xff0c;其表现令我震惊&#…...

接口自动化框架搭建(九):接入钉钉消息通知

1&#xff0c;jenkins安装钉钉插件 2&#xff0c;在钉钉群聊设置机器人 3&#xff0c;jenkins配置钉钉 根据情况选择&#xff1a; 除了这些&#xff0c;其他不用配置&#xff0c;配置完成点击确认 4&#xff0c;项目配置 添加后保存 5&#xff0c;测试下效果 构建完成后&a…...

一、点击视频下载(通过视频url实现);二、点击下载视频按钮,视频以压缩包形式下载(但未实现压缩视频)

一、点击视频下载&#xff08;通过视频url实现&#xff09; <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树 特点&#xff1a;一个节点当中可以有多个值&#xff0c;节点内部key 值是有序的&#xff0c;节点内部存储的是key-value类型的数据 磁盘中文件存储用B树。 4阶B树一个节点最多三个key值 5阶B树一个节点最多四个key值 B树有很多的分支&…...

评价指标_Precision(精确率)、Recall(召回率)和Accuracy(准确率)区别和联系

Precision&#xff08;精确率&#xff09;、Recall&#xff08;召回率&#xff09;和Accuracy&#xff08;准确率&#xff09;是机器学习和信息检索领域常用的评价指标&#xff0c;它们用于评估分类器或检索系统的性能&#xff0c;但各自关注的方面略有不同。 Precision&#x…...

【React】React AJAX

在React中使用AJAX&#xff08;Asynchronous JavaScript and XML&#xff09;是一种常见的做法&#xff0c;用于从服务器获取数据并在组件中显示。尽管AJAX的名字中包含了XML&#xff0c;但现在更多地使用JSON&#xff08;JavaScript Object Notation&#xff09;作为数据交换格…...

vue 移动端弹窗带滚动效果 滚动到底的时候弹窗下的页面会跟着滑动

<template><div class"wrap" :style"dynamicStyle"><!--dynamicStyle主要是介个 通过computed设置postion的值 弹窗的时候设置为fixed 关闭弹窗的时候设置为unset--><div class"banner-wrap"><img src"/assets/…...

Linux-3 yum和vim

目录 本节目标&#xff1a; Linux 软件包管理器 yum 什么是软件包 1.yum是什么&#xff1f;软件包&#xff1f; 2.Linux(centos)的生态 3.yum的相关操作 我怎么知道我应该安装什么软件&#xff1f; 4.yum的本地配置 关于 rzsz 查看软件包 Linux编辑器-vim使用 1.v…...

什么是计算机视觉?计算机视觉:从基础到前沿

引言 计算机视觉&#xff0c;作为人工智能的一个重要分支&#xff0c;致力于赋予机器“看”的能力——即从图像或视频中理解和解释视觉信息的能力。这项技术的发展为自动驾驶汽车、面部识别、机器人导航等多种应用开辟了道路&#xff0c;正在逐步改变我们的工作和生活方式。本…...

Java中的可变字符串

Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…...

C++多线程:单例模式与共享数据安全(七)

1、单例设计模式 单例设计模式&#xff0c;使用的频率比较高&#xff0c;整个项目中某个特殊的类对象只能创建一个 并且该类只对外暴露一个public方法用来获得这个对象。 单例设计模式又分懒汉式和饿汉式&#xff0c;同时对于懒汉式在多线程并发的情况下存在线程安全问题 饿汉…...

康耐视visionpro-CogAcqFifoTool工具详细说明

CogAcqFifoTool操作说明&#xff1a; ① 打开工具栏&#xff0c;双击或点击鼠标拖拽 添加CogAcqFifoTool ②.从图片采集设备/图像采集卡列表里选择对应的相机&#xff0c;视频格式选择图像格式。 Mono表示黑白图像&#xff0c;RGB表示彩色相机。点击初始化取相初始化相机。 ③…...

静态图片如何生成gif动画?一个网站在线实现

在当下这个媒体时代&#xff0c;各种各样的图片充斥着我们的生活。尤其是gif动图能够快速有效的传递信息&#xff0c;让用户更加直观的了解某个时间或是场景。非常的生动便捷&#xff0c;那么怎么弄制作gif动画图片呢&#xff1f;其实&#xff0c;只是gif动画的方法非常的简单&…...

Git 实战教程

Git 是一款强大的分布式版本控制系统&#xff0c;广泛用于团队协作与项目管理。本文将为你提供一份 Git 的实战教程&#xff0c;通过实例演示 Git 的基本用法和高级特性&#xff0c;帮助你快速上手 Git。 一、Git 基础 安装 Git 首先&#xff0c;你需要在你的计算机上安装 G…...

解决Vue中仓库持久化的问题,不借助插件用原生JS实现仓库持久化。了解仓库的插件机制、监听的时机

1、演示 前言&#xff1a;目前Vue有两种仓库&#xff0c;一种是Vuex&#xff0c;一种是Pinia&#xff0c;懂得都懂&#xff0c;这里就不详细介绍这两者的区别了 2、什么是持久化 仓库里面的数据是需要跨越页面周期的&#xff0c;当页面刷新之后数据还在&#xff0c;在默认情况下…...

ajax的优缺点有哪些?

我们先来介绍一下什么是ajax&#xff1a; 对于ajax的理解&#xff0c;ajax是一种使用现有技术集合技术内容包括: HTML或XHTML、CSS、 JavaScript、DOM、XML、 XSLT&#xff0c; 以及最重要的XMLHttpRequest。 用于浏览器与服务器之间使用异步数据传输(HTTP请求)&#xff0c;做…...

自贡市第一人民医院:超融合与 SKS 承载 HIS 等核心业务应用,加速国产化与云原生转型

自贡市第一人民医院始建于 1908 年&#xff0c;现已发展成为集医疗、科研、教学、预防、公共卫生应急处置为一体的三级甲等综合公立医院。医院建有“全国综合医院中医药工作示范单位”等 8 个国家级基地&#xff0c;建成高级卒中中心、胸痛中心等 6 个国家级中心。医院日门诊量…...

vue使用iview导航栏Menu activeName不生效

activeName不生效 一、问题一、解决方案&#xff0c; 一、问题 根据ivew官网的提示&#xff0c;设置了active-name和open-names以后&#xff0c;发现不管是设置静态是数据还是设置动态的数据&#xff0c;都不生效 一、解决方案&#xff0c; 在设置动态名称的时候&#xff0c…...

谷粒商城实战(008 缓存)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第151p-第p157的内容 简介 数据库承担落盘&#xff08;持久化&#xff09;工作 拿map做缓存 这种是本地缓存&#xff0c;会有一些问题 分布…...

wordpress k2/优化软件刷排名seo

EasyNVR流媒体解决方案 EasyNVR能够通过简单的网络摄像机通道配置&#xff0c;将传统监控行业里面的高清网络摄像机IP Camera、NVR等具有RTSP协议输出的设备接入到EasyNVR&#xff0c;EasyNVR能够将这些视频源的音视频数据进行拉取&#xff0c;转换为RTMP/HLS&#xff0c;进行…...

电影采集网站怎么做seo/做网络推广怎么收费

为什么80%的码农都做不了架构师&#xff1f;>>> 一个参与实施开发工作的程序员&#xff0c;用7年的时间在一个梦里摸爬滚打。梦醒了发现自己什么都不是了&#xff0c;连工作了三年的程序员都不如了&#xff0c;真正从事研发工作和我这个只参与实施开发的程序员的差…...

义乌网站建设优化案例/网站测试报告

1、安装vue-router插件npm install vue-router --save其中--save是为了保存在package.json配置中&#xff0c;写在配置文件中下次install的时候&#xff0c;依赖包就会按照json文件中的配置项进行安装2、在src中新建一个配置动态路由的js文件&#xff0c;js文件主要配置对应的路…...

0基础做下载网站/郑州网站建设方案

正向代理和反向代理的区别&#xff1f; 正向代理和反向代理的本质都是代为收发请求和响应。 正向代理是一个位于客户端和目标服务器之间的代理服务器。为了从原始服务器取得内容&#xff0c;客户端向代理服务器发送一个请求&#xff0c;并且指定目标服务器&#xff0c;之后代理…...

开创集团网站建设/排名检测

本文属于「征服LeetCode」系列文章之一&#xff0c;这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁&#xff0c;本系列将至少持续到刷完所有无锁题之日为止&#xff1b;由于LeetCode还在不断地创建新题&#xff0c;本系列的终止日期可能是永远。在这一系列刷题文章…...

如何建CMS网站/单词优化和整站优化

惠普u盘重装系统按什么键&#xff1f;惠普电脑默认是从硬盘启动的&#xff0c;如果要用U盘装系统&#xff0c;需要设置U盘启动&#xff0c;惠普笔记本和台式机都支持通过F几快捷键选择U盘启动&#xff0c;不过多数用户还不清楚惠普装系统按哪个键&#xff0c;下面小编跟大家介绍…...