【CSharp高级编程】default和typeof运算符
前言这部分本来应该和泛型一起讨论,考虑到分类问题,遂单独拿出来记录。
default运算符早在C# 1时代,typeof()运算符就已经出现了,它接收一个类型名称作为唯一操作数。C# 2加入了default()运算符,并且略微拓展了typeof()的用途。
default运算符功能比较简单,它是一元运算符,其操作数是类型名或者类型形参,返回值是该类型的默认值。当声明一个字段,但是没有为该字段立刻赋值时,该字段的值就是默认值。如果是引用类型,默认值是一个null引用。如果是非可空值类型,将返回对应类型的”0值”(0,0.0,0.0m,false,UTF-16编码单元的0等);如果是可空值类型则返回类型的null值。
default运算符可以用于类型形参以及提供了类型实参的泛型类型,例如如下都是合法的:
1234default(T)default(int)default(string)default(List<T>)
default运算符返回值的类型与操作数类型一致。**default常与泛型类型形参一起使用**,因为对于非泛型类型可以通过其他方式获取default值。但是对 ...
Git与GitHub(中)
前言这部分将讲述Git相关的基本知识和操作方法。
各种Git命令操作,需要鼠标右键选择,Git Bash here来开始。
基本操作
git init——初始化仓库
要使用Git进行版本管理,必须先初始化仓库。Git是使用git init命令进行初始化的。命令示例:
1git init
如果初始化成功,执行了git init命令的目录下就会生成.git目录。这个目录里存储着管理当前目录内容所需的仓库数据。
.git目录默认隐藏,需要开启查看隐藏文件才可以查看到
在Git中,我们将这个目录的内容称为“附属于该仓库的工作树”。文件的编辑等操作在工作树中进行,然后记录到仓库中,以此管理文件的历史快照。如果想将文件恢复到原先的状态,可以从仓库中调取之前的快照,在工作树中打开。开发者可以通过这种方式来获取以往的文件,具体的操作指令后面会说明。
git status——查看仓库状态
git status命令用于显示Git仓库的状态。
工作树和仓库在被操作的过程中,状态会不断发生变化。在Git操作的过程中,要常看仓库状态。命令示例:
123456$ git statusOn branch ...
Git与GitHub(上)
前言这部分写于寒假,之前学过git一些基本操作,属于学个开始就由于别的事情暂时耽搁了,现在是大三寒假,我决定把它补上。
此处推荐两个网站,一个是git官方的书籍教程,一个是GitHub上比较有名的可视化git教程
玩游戏学习git网站
特别好的git书籍
Git与GitHub简要关于GitHubGitHub作为最大的同性交友网站(雾),**GitHub为开发者提供Git仓库的托管服务,可以让开发者及其相关人员共享代码的场所**。可以暂时通俗理解为代码的仓库。
关于GitGit属于分散型版本管理系统,是为版本管理而设计的软件。
Linux的创始人Linus Torvalds在2005年开发了Git的原型程序,当时是为了更好的维护Linux系统。
关于这里有一个故事:一开始Linux之父是个人在开源做Linux,随着参与项目的人越来越多,Linux项目越来越复杂,Linux之父不得不在代码整理,纠错,审核,检查,发布的过程中耗费大量的时间,这样就严重影响了开发,于使Linux之父使用了当时的版本管理系统,虽然这样解决相关问题,当时由于技术宅的爱好,就把提供Linux之父版本控制厂商研发 ...
【CSharp高级编程】委托
前言关于委托,我一开始同样也是没打算写的,但是考虑到我要写 lambda表达式的相关内容,于是不得不先说明委托的内容。对于初学者来说,第一次见到委托应该是在 Win 的事件模型中吧,反正我是这样的,这部分将对委托做详细说明。
委托委托这一特性存在的目的是封装目标代码。封装好的代码可以在应用程序中进行传递,并根据需要执行(要保证参数和返回值的类型安全)。在C# 1时代,委托基本上用于事件处理和启动线程。即使在 2005 年后的C# 2推出之后,这一状况也没有太大变化。直到 2008 年 LINQ 问世,C# 开发人员才开始适应这种把函数传来传去的编程方式。
C# 2提供了 3 种 创建委托实例的新方式,同时支持声明泛型委托,比如EventHandler<TEventArgs>和Action<T>。
方法组转换所谓方法组,就是一个或者多个同名方法。可以说,我们在每天不知不觉中使用方法组,因为每调用一次方法就是对方法组的一次使用,代码示例:
1Console.WriteLine("Hello,World");
表达式Console.WriteLi ...
【CSharp高级编程】泛型
前言我本来之前打算出一个C#入门到中级的相关文章教程的,但是考虑到太简单了我实在是懒得写了,可以参考很多网上的教程来学习,对于现在的我来说,我更加想记录一下C#的高级教程,因为对于C#的高级用法网上的教程并没有太多或者说太详细或者系统,也算是记录我自己的C#进阶路程。
前排提醒:查看学习本文章,需要掌握一定的C#基础。
引用说明:部分内容学习自网络和《深入理解C#》
泛型在C#入门的时候,就大概说明过泛型的用法和功能,它可以在不需要事先知道要使用的类型,即可以在不同位置表示相同的类型。在C# 2之前(即.NET 1),泛型主要用于集合。如今,泛型以及广泛应用到各个部分,其中使用较多的如下几项:
集合
委托(尤其是LINQ中的应用)
异步代码(Task<T>表示该方法将返回一个类型为T的值)
可空值类型
如下实例将会从集合角度来展示泛型的优势。
泛型诞生前的集合在.NET 1有如下三大类集合:
数组:语言和运行时直接支持数组。数组的大小在初始化的时候就确定了。
普通对象集合:API中的值通过System.Object描述。尽管诸如索引器和和foreach语句这些语 ...
关于我的Unity自述
前言依次纪念我大学追求游戏开发的自己,我记得大概是20年10月份吧或者11月份,我正式开始了Unity的学习,我的游戏开发结束于21年暑假结束,在大三上,在我掌握并开发了一定的Unity游戏开发后,去学习了桌面软件开发,并且掌握了Winform和WPF开发技术,其中还有许多其他方面的东西。
关于我如何自学的自述当然这一切都归功于Unity在学习游戏开发的过程中,我接触到了很多其他的东西,我看过很多教程,目前总结出来的自学流程:对于想要的学习的东西通过网络上查询了解概况,逞钱的伙伴可以直接买相关书籍,或者为了省钱的可以去学校图书馆借书,我很喜欢我们学校的图书馆,我曾经最多借书超过20本未还,当然借书多不代表能看得完,有些是需要长期来学习的,有些是短期来学习的,书籍是真的很好的东西,其次是教学视频,很多情况下我目前个人建议是不要过分依赖视频,视频教学可以让我们快速上手,但是对于教学内容来说全看视频制作者想讲什么或者视频制作者的见识,存在一定的局限性,综述来说:书籍 > 网络上的教学视频,然后就是跟着做,在学的时候要记笔记,我从一开始使用微软的OneNote笔记到后来的Markdown ...
LaTex基础(上)
前言从MS Office 到 Markdown 再到 LaTex,每个不同的编辑软件都对不同的文本排列提供了一种解决方案,可以根据自己的实际需求来合理使用,我尝试记录最基本且简单的语法来说明LaTex的使用语法。
我使用的 LaTex 编辑器为 TexStudio,Tex的宏包直接安装的 Tex Live。
本文内容是我个人学习自 《简单高效LaTex》以及百度和Bilibili相关网站的学习内容整理笔记
认识LaTex
前排提醒:LaTex对大小写敏感,即区分大小写
命令与环境LaTex中的命令通常是由一个反斜杠加上命令名称,再加上花括号内的参数构成,例如:
1\documentclass{ctexart}
如果一些选项是有其他可以缺省的参数,一般在花括号前使用[]来指定,例如:
1\documentclass[UTF8](ctexart)
关于LaTex的正文部分,写在一个称为环境的部分,其格式类似于HTML的body,需要将内容写在其间,例如:
123\begin{environment}这里是你的内容\end{envi ...
MarkDown进阶用法
MarkDown进阶用法前言对于常规的排版问题,MarkDown给出了简单的解决方案,但是如果我们希望能够做出顺序图/时序图或者相关流程图,又或者数学相关工作者希望的相关数学公式显示问题又怎么解决呢?
学习此部分,需要掌握一定的MarkDown基础
本部分内容为个人经验总结
本篇最后更新于 时间 ,部分内容可能与现在不符,请自行判断
——生命的意义不在于躲避风雨,而是在雨中起舞♬
转义字符如果在使用过程中,用户想要输入类似于 * 的等已经有相关意义的字符怎么办?这个时候就需要使用转义字符来表示你要单独使用该字符了,告诉编译器不要翻译成markdown格式了。MarkDown支持在下面的字符前插入反斜杠(\)来实现转义。
123456789101112\ 反斜线` 反引号* 星号_ 下划线{} 花括号[] 方括号() 小括号# 井字号+ 加号- 减号. 英文句点! 感叹号
脚注创建脚注格式类似这样 [^Markdown]。
[^Markdown]: MarkDown – Markdown是一种轻量级标记语言, ...
如何化身嘉然小姐来参加网课
前言我们终于开始上网课了,看到网课的摄像头,啊很快啊,一个整活的想法油然而生啊。反手就是一个嘉然小姐,一个面补,我都打出去了,他都防住了,我说对不起我是瞎放的,他说我可不是瞎放的,视频后期,绿幕抠图,虚拟摄像头一看就是有备而来………
扯远了,关于最终的思想效果,如下图:
感谢林某爹提高的图片
软件准备和环境说明【配置说明】
Win10操作系统
vTube studio最新版
OBS Studio最新版
腾讯会议
VTube studioVTube studio的安装这个软件是Vtube即2D模型/2.5D模型的运算场景,说人话就是虚拟人物和面部捕捉是在这个软件进行的,首先打开Steam,搜索VTube studio,如下图,选择安装即可
如果你的足够有能力的话,可以购买DLC来支持一下该软件
安装完成后,运行VTube studio界面如下图,在进入软件的时候会弹出一堆相关说明,确认即可。
VTube studio的使用模型捕捉绑定在安装完成后,进入软件的界面,首先需要记住的是可以使用双击来唤醒菜单,关于各个部分的功能如下图:
现在你所看到的人物模 ...
正则表达式
前言正则表达式是去年夏天我就想说明的东西了,不过一直鸽到现在,这部分将会记录正则表达式的基本语法以及一个C#应用实例。
关于正则表达式学习个人的相关推荐:
learn-regex
正则表达式 - 教程
10分钟快速掌握正则表达式
关于正则表达式测试的网站:
RegExr
Regulex
关于正则表达式在线生成工具(1/2不表示排名):
正则表达式在线生成工具1
正则表达式在线生成工具2
正则表达式关于正则表达式百度百科的定义如下
正则表达式,又称规则表达式。**(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
通俗来说,就是我们常用的Word搜索功能的加强版,它可以通过特定的语法格式来实现文本搜索(匹配),来满足我们期望找到的文本。
Regular expression(正则表达式)这个词比较拗口,常使用缩写的术语“regex”或“regexp”
基本语法基本匹配正则表达式的基本匹配是我们常规的搜索类型,即所见即所得,例如:输入 ...