C#语法教学
文章平均质量分 61
一唐老狮一
用干货教你游戏开发
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【唐老狮】C#四部曲之C#基础:习题汇总
本篇文章对视频教程《【唐老狮】Unity系列之C#四部曲—C#基础》当中的课后练习题进行了汇总,方便同学们统一进行练习和复习这些习题的解题部分都在本教程中以视频的形式进行了详细讲解B站免费试看:【唐老狮】Unity系列之C#四部曲—C#基础_哔哩哔哩_bilibili泰课会员免费看:https://www.taikr.com/goods/show/593本套课程属于Unity实战就业路线(打折预售中)https://www.taikr.com/goods/sho.原创 2022-04-29 17:59:23 · 3636 阅读 · 0 评论 -
【唐老狮】C#四部曲之C#入门:习题汇总
本篇文章对视频教程《【唐老狮】Unity系列之C#四部曲—C#入门》当中的课后练习题进行了汇总,方便同学们统一进行练习和复习这些习题的解题部分都在本教程中以视频的形式进行了详细讲解B站免费试看【唐老狮】Unity系列之C#四部曲—C#入门_哔哩哔哩_bilibili泰课会员免费看:https://www.taikr.com/goods/show/589本套课程属于Unity实战就业路线(打折预售中)https://www.taikr.com/goods/show/5.原创 2022-04-26 15:13:58 · 4152 阅读 · 0 评论 -
【唐老狮】Unity网络通信中的分包、黏包
在进行网络开发时,不管是前后端都需要处理消息的分包和黏包。那所谓的分包和黏包,它具体的含义是什么呢?分包:一个消息包被分成了多个消息包进行发送黏包:一个消息包和另一个消息包黏在了一起如果通过描述,你无法明白它的意思,那通过下面的这张图,我相信你的脑海里就会产生分包和黏包的画面感了。具体的表现是什么呢?在进行网络开发时,我们收发的消息都是以字节数组的形式存在的。消息A ——> 字节数组A(假设长度为32)消息B——>字节数组B(假设长度为24)黏包...原创 2022-04-21 13:28:22 · 2470 阅读 · 0 评论 -
【唐老狮】字符编码(ASCII,Unicode和UTF-8)
【什么是字符编码】字符编码(英语:Character encoding)也称字集码是把字符集中的字符,编码为指定集合中某一对象,以便文本在计算机中存储或通过网络进行传递。说人话:计算机里只能存数字(2机制),所以如果文字字符想要进行存储的话,就需要把对应的文字字符转换为数字才能进行处理,而字符编码就是文字字符在计算机中和数值的对应关系,是人为定义的一种映射规则。比如:ASCII码(一种字符编码规则)中数值是65用来映射...原创 2022-04-06 11:32:41 · 804 阅读 · 0 评论 -
【唐老狮】C#——泛型约束
上篇回顾泛型语法class类名<占位字母>返回值类型函数名<占位字母>(参数类型参数...)概念泛型相当于类型占位符占位字母可以有多个占位字母一般为大写字母定义类或方法时使用替代符代表变量类型当真正使用类或者方法时再具体指定类型种类泛型类泛型方法上一篇文章,我们已经学习了泛型的基本知识点,泛型就是一个可以替代任何类型的一个占位符。那么如果我想约束使用者可以用的类型,应该如何处理呢?今天学习的知识...原创 2022-03-30 12:27:03 · 2280 阅读 · 0 评论 -
【唐老狮】C#——泛型
【泛型】语法class类名<占位字母>返回值类型 函数名<占位字母>(参数类型参数...)概念泛型相当于类型占位符占位字母可以有多个占位字母一般为大写字母定义类或方法时使用替代符代表变量类型当真正使用类或者方法时再具体指定类型种类泛型类泛型方法【泛型类】【泛型方法】泛型类中的泛型方法普通类中的泛型方法【泛型替代符数量不定】...原创 2022-03-29 12:07:09 · 793 阅读 · 0 评论 -
【唐老狮】C#——Hashtable
【Hashtable】本质哈希表特点存在装箱拆箱存储任意类型键值对成对出现一个键对应一个值通过键快速查找值【声明】需要引用命名空间【添加】向Hashtable中添加键值对Add方法【获取】通过键快速获取值以中括号的形式访问【移除】移除键值对Remove方法【查看是否存在】查看键是否存在ContainsKey方法查看值是否存在ContainsVal.原创 2022-03-26 12:16:23 · 725 阅读 · 0 评论 -
【唐老狮】C#——Queue
【Queue】本质队列特点先进先出存在装箱拆箱存储任意类型无法遍历查看元素无法获取指定位置元素只能查看获取头部元素Queue是队列存储容器,队列是一种先进先出的数据结构,先存入的数据先获取,后存入的数据后获取。如图【声明】需要引用命名空间【添加】向队列中添加元素Enqueue方法【获取】移除并获取头部元素Dequeue方法【查看】查看头部元素...原创 2022-03-25 10:24:29 · 1156 阅读 · 1 评论 -
【唐老狮】C#——Stack
【Stack】本质栈特点先进后出存在装箱拆箱存储任意类型无法遍历查看元素无法获取指定位置元素只能查看获取栈顶元素Stack是栈存储容器,栈是一种先进后出的数据结构,先存入的数据后获取,后存入的数据先获取。如图【声明】需要引用命名空间【添加】向栈中添加元素Push方法【获取】移除并获取栈顶元素Pop方法【查看】查看栈顶元素Peek方法...原创 2022-03-22 17:44:50 · 518 阅读 · 0 评论 -
【唐老狮】C#——ArrayList
【ArrayList】本质object数组特点自动调整空间大小存在装箱拆箱存储任意类型ArrayList是一个C#为我们封装好的类,它的本质是一个object类型的数组,ArrayList类帮助我们实现了很多方法,比如数组的增删查改,都提供给了我们对应的方法,方便我们使用,不需要我们自己来实现相关的逻辑。回顾数组的存储结构数组的声明必需一开始就声明好具体占多少内存空间,当我们进行增删查改时需要考虑扩容和移位相关的复杂操作...原创 2022-03-21 11:32:57 · 1281 阅读 · 0 评论 -
【唐老狮】C#——命名空间
【命名空间】关键字namespace作用管理类将代码模块化特点命名空间可以被包裹允许不同命名空间中存在同名类使用不同空间中同名类需要指明出处命名空间可以通过using关键字引用语法命名空间的主要作用是管理各种类,不同功能不同模块的类放在不同的命名空间中进行管理,可以让代码逻辑更清晰,使用更方便。【不同命名空间中可以有同名类】【命名空间可被包裹】【命名空间的引用】...原创 2022-03-18 14:04:32 · 964 阅读 · 0 评论 -
【唐老狮】C#——万物之父中的方法
知识点回顾万物之父关键字object概念object是所有类型的基类它是一个类(引用类型)作用可以利用里氏替换原则用object装所有对象可以用来表示不确定类型作为函数参数类型选中输入的object按F12或者右键转到定义我们可以看到作为万物之父的object本质上就是一个Object类,里面有2个静态方法,3个虚方法,2个普通成员方法。其中对于我们来说,常被我们重写和使用的就是ToString方法...原创 2022-03-17 12:08:37 · 1425 阅读 · 0 评论 -
【唐老狮】C#——多态:接口
目前多余多态的实现,我们已经学习了两种方式:vob以及抽象类和抽象函数。今天我们要来学习最后一个关于多态实现的知识点——接口!在学习它之前我们先来回顾一下重要知识点。【vob】多态的概念同一类型对象执行相同行为有不同的表现多态的实现↓↓↓↓编译时多态函数重载运行时多态虚函数(vob)抽象函数接口vobvirtual(虚函数)override(重写)v和o结合使用实现多态base(父类)保留...原创 2022-03-15 11:47:48 · 574 阅读 · 0 评论 -
【唐老狮】C#——多态:抽象类和抽象方法
上篇回顾概念同一类型对象执行相同行为有不同的表现多态的实现↓↓↓↓编译时多态函数重载运行时多态虚函数(vob)抽象函数(之后讲)接口(之后讲)vobvirtual(虚函数)override(重写)v和o结合使用实现多态base(父类)保留父类行为上一篇我们已经学习了多态的基本概念,和利用vob来实现多态。今天我们将学习多态的另一种实现——抽象类和抽象函数。【抽象类和抽象函数】...原创 2022-03-11 12:21:06 · 557 阅读 · 0 评论 -
【唐老狮】C#——多态和vob
截止目前,我们已经学会了面向对象中封装和继承两大特性的相关知识点。简单理解它们,封装就是用代码形容一个现实对象,继承就是复用代码,通过继承可以让类之间建立父子关系,复用一些特征和行为。那么,我们接下来要继续学习最重要的一个特性——多态。【多态】概念同一类型对象执行相同行为有不同的表现为什么要学习多态? 根据多态的概念,很多同学可能会写出如上的代码,子类中重新实现一个SpeakName的方法,前面加一...原创 2022-03-10 14:11:17 · 949 阅读 · 0 评论 -
【唐老狮】C#——继承:密封类
上篇回顾【万物之父】关键字object概念object是所有类型的基类它是一个类(引用类型)作用可以利用里氏替换原则用object装所有对象可以用来表示不确定类型作为函数参数类型【装箱拆箱】发生条件用object存值类型(装箱)再把object转为值类型(拆箱)装箱把值类型用引用类型存储栈内存会迁移到堆内存中拆箱把引用类型存储的值类型取出来堆内存会迁移到栈内存中好处不确定类型时原创 2022-03-08 10:38:47 · 580 阅读 · 0 评论 -
【唐老狮】C#——继承:万物之父和装箱拆箱
上篇回顾继承中构造函数的特点当声明一个子类对象时构造函数的执行顺序先执行父类的再执行子类的父类构造↓↓↓父类构造↓↓↓.......↓↓↓子类构造默认调用父类无参构造所以父类无参构造很重要子类可以通过base关键字代表父类调用父类构造base和this用法相似之前我们已经学习了里氏替换原则,我们可以用父类容器装子类对象。今天要学习的知识就是基于里氏替换原则的。什么!你已经忘记里氏替...原创 2022-03-07 11:55:14 · 607 阅读 · 0 评论 -
【唐老狮】C#——继承:构造函数
上篇回顾里氏替换概念父类对象装子类对象作用方便进行对象存储和管理使用is和asis用于判断父类是不是指定类型的子类as用于转换父类类型转换为子类类型对象当然父子可以相互转换今天的标题是继承:构造函数,很多同学肯定有疑问,我们在封装时不是已经学习了构造函数吗?继承后的构造函数有什么不同吗?那首先,我们回顾一下在封装中学习的构造函数。构造函数实例化对象时调用的函数主要用来初始化成员变量不写返回值函数名和类名相同...原创 2022-03-05 10:56:00 · 3907 阅读 · 4 评论 -
【唐老狮】C#——继承:里氏替换原则(is和as)
上篇回顾继承概念一个类A继承一个类B类A将会继承类B的所有成员A类将拥有B类的所有特征和行为被继承的类称为父类、基类、超类继承的类称为子类、派生类子类可以有自己的特征和行为特点单根性(只能有一个父类)传递性(子类可以间接继承父类的父类)注意访问修饰符的作用public-公共子类和外部都能访问private-私有自己才能访问protected-保护自己和子类才能访问子类有和父..原创 2022-03-04 12:16:13 · 1766 阅读 · 1 评论 -
【唐老狮】C#——继承:基本规则
通过之前的文章,我们已经把封装相关知识点全部学习完毕了,我们已经可以游刃有余的用面向对象的思想用程序去形容一个现实事物了。今天我们正式开始学习继承相关的知识点,它可以帮助我们节约代码量,理清对象之间的关系。【继承】概念一个类A继承一个类B类A将会继承类B的所有成员A类将拥有B类的所有特征和行为被继承的类称为父类、基类、超类继承的类称为子类、派生类子类可以有自己的特征和行为比如...原创 2022-03-01 13:43:05 · 792 阅读 · 0 评论 -
【唐老狮】C#——封装:内部类和分部类
目前,我们几乎已经把面向对象封装特性的重要知识点学习完了。今天要讲的内部类和分部类,在实际开发中用的较少,只需了解即可。学习它们的目的是当你遇到了要看得懂。【内部类】概念在一个类中再声明一个类特点使用时要用包裹者点出自己作用亲密关系的表现注意访问修饰符作用很大如上面的代码,Body类可以认为和Person类关系非常亲密,它一定是和Person类关联在一起使用的,Arm类和Body类的关系同理,所...原创 2022-02-28 12:21:32 · 653 阅读 · 0 评论 -
【唐老狮】C#——封装:运算符重载
目前我们学过的变量中,除了几种自定义的变量(结构体、类、枚举),语言本身的13种常用变量类型byte、int、float等等都默认支持用运算符进行计算,也支持条件运算符进行比较。今天我们要学习的内容就是如何让自定义的类型能够使用运算符进行运算和比较!【运算符重载】概念让自定义类和结构体能够使用运算符关键字operator固定语法public static返回值operator运算符(参数列表)特点一定是一个公共的静态方法返回值...原创 2022-02-26 12:53:30 · 442 阅读 · 0 评论 -
【唐老狮】C#——封装:拓展方法
上篇回顾静态类用static修饰的类只能包含静态成员不能被实例化作用工具类拓展方法静态构造函数静态类和普通类都可以有用static修饰的构造函数不能使用访问修饰符不能有参数自动调用作用初始化静态成员通过上两篇文章,我们已经学习了关于static的关键知识:静态成员、静态类和静态构造函数。我们今天要学习一个关于静态的高级知识点,也是之后在Unity中肯定会涉及到的知识点——拓展方法。【拓展方法】概念...原创 2022-02-25 11:38:13 · 627 阅读 · 0 评论 -
【唐老狮】C#——封装:静态类和静态构造函数
上篇回顾静态关键字static静态成员用static修饰的成员变量成员方法成员属性等特点直接用类名点出使用生命周期同生共死会一直存在内存中直到程序结束后才会被释放因此静态成员具有唯一性注意静态函数中不能直接使用非静态成员非静态函数中可以直接使用静态成员常量和静态变量常量是特殊的静态变量相同点它们都可以通过类名点出使用不同点const必须初始化,不能修改static没有这个规则原创 2022-02-23 13:15:44 · 877 阅读 · 2 评论 -
【唐老狮】C#——封装:静态成员
关于面向对象三大特性之封装,我们已经学习了许多知识点:类和对象、成员变量和访问修饰符、成员方法(函数)、构造函数和析构函数、成员属性、索引器。当你看到这些知识点时,如果发现自己已经不清楚或者忘记了,你可以再看看前几篇文章来进行回顾。今天我们要讲的是一个非常重要的知识点,是面试中经常会问到的内容——静态成员。【静态成员】静态关键字static静态成员用static修饰的成员变量成员方法成员属性等特点直接...原创 2022-02-22 13:24:44 · 923 阅读 · 0 评论 -
【唐老狮】C#——封装:索引器
还记得我们学过的数组吗?数组可以通过中括号array[0]中括号包裹索引的形式得到指定位置的数组元素。我们今天要学习的索引器,它的作用就是允许类或结构体的实例按照和数组相同的方式进行索引访问。【索引器】索引器类似成员属性使用get和set语句块索引器的固定写法访问修饰符返回值this[参数]内部规则和属性的get和set规则一样索引器的get和set中可以写逻辑索引器的参数类型可以...原创 2022-02-20 11:53:32 · 605 阅读 · 0 评论 -
【唐老狮】C#——封装:成员属性
上篇回顾构造函数实例化对象时调用的函数主要用来初始化成员变量不写返回值函数名和类名相同访问修饰符根据需求而定一般为public可以重载构造函数可以用this语法重用代码可以用this区分同名参数和成员变量有参构造会顶掉默认的无参构造如想保留无参构造需重载出来析构函数当类对象被垃圾回收时调用主要用来回收资源或者特殊处理Unity中几乎不用不写返回值不写修饰符不能有参数函数名和类名相同前面加~原创 2022-02-19 21:58:25 · 537 阅读 · 0 评论 -
【唐老狮】C#——封装:构造函数和析构函数
上篇回顾成员方法描述行为类中声明任意数量返回值和参数根据需求决定今天我们将来学习两个特殊的成员函数(方法)构造函数析构函数【构造函数】默认存在一个无参构造函数如何自己实现一个构造函数构造函数一般是用来初始化信息的构造函数的访问修饰符一般public如果是private外部就无法new对象了构造函数可以被重载不手动实现无参构...原创 2022-02-18 12:46:55 · 874 阅读 · 0 评论 -
【唐老狮】C#——封装:成员方法
上篇回顾访问修饰符决定成员变量的访问权限public——公共private——私有成员变量在类中声明的变量描述特征赋值随意任意类型任意数量今天我们将来学习对象的行为成员方法【成员方法】通过前几篇文章,我们已经可以用成员变量在类中形容对象的特征了,但是对于对象来说,只有特征是不够的。比如人的特征:姓名,年龄,性别,国籍等等都可以通过成员变量来表示,但是对于人的行为:走路,吃饭,睡觉等等,用成员变量是不能够表...原创 2022-02-16 13:21:10 · 871 阅读 · 1 评论 -
【唐老狮】C#——封装:成员变量和访问修饰符
上篇回顾类是对象的模板用来抽象现实对象对象是类的实例用来表示现实对象个体类是一个自定义变量实例化类对象是在声明变量今天我们将来学习对象的特征成员变量【成员变量】面向对象编程思想,简单点说就是用程序语言来抽象(形容)出现实对象。现在我们已经知道类是用来形容对象的,而对象是类实例化出来的。而具体对象的特征和行为在类中表现主要是通过:成员变量和成员方法体现的。成员变量↓↓↓↓在类里...原创 2022-02-14 15:06:56 · 800 阅读 · 0 评论 -
【唐老狮】C#——封装:类和对象
通过上一篇文章,我们已经基本了解了面向对象编程的基本概念:万物皆对象,用程序代码来形容各对象,用面向对象的思想来编写程序。那么今天我们就来看看在程序中如何来形容对象。【类和对象】【什么是类?】具有相同特征具有相同行为一类事物的抽象类是对象的模板可以通过类创建出对象类的关键词class类一般写在namespace语句块中以上这些我们都称为类人类机器类植物类现在这些类内部还没有用于具体形...原创 2022-02-13 16:39:30 · 726 阅读 · 0 评论 -
【唐老狮】面向对象——概念
【面向对象】万物皆对象用程序来抽象(形容)对象面向对象的思想来编程 面向对象编程(Object Oriented Programming,OOP),它是一种主流编程思想。面向对象编程的思想很简单,最简单的套路是用中文去形容一类对象,把一类对象的共同点提取出来,然后用程序语言把它翻译过来,带着对象的概念在程序中使用它们。就好像我们在下一盘棋,各个棋子就是一个个的对象,他们各司其职,我们只需要在程序中控制使用它们...原创 2022-02-11 08:30:00 · 522 阅读 · 0 评论 -
【唐老狮】C#——字符串常用方法
我们现在学习了函数(方法),那你应该可以发现C#中已经提供了很多常用方法供我们使用。比如之前学习的控制台打印和玩家输入相关的知识点,它们本质上都是方法。比如Write和WriteLine方法,C#已经帮我们实现了很多重载,所以我们可以用它们打印任何类型的对象。那么对于我们常用的字符串,C#也提供了很多方便的函数(方法),今天我们就来学习相关知识点。注意string中有很多函数本篇不会全部讲解讲到的函数都...原创 2022-02-10 12:19:50 · 690 阅读 · 0 评论 -
【唐老狮】C#——函数递归
函数相关知识点对于我们非常的重要,因为函数是我们最常使用的编程武器,所以大家一定要把函数相关知识学好。今天要学习的函数递归知识点,对于新手来说是一个不太容易理解的内容,它的理论基础很简单,重要的是需要通过大量的练习来提升自己的逻辑思维能力,只要逻辑能力提升了,函数递归也就不是问题了。【函数递归】【理论概念】递归概念↓↓↓↓强记忆一句话↓↓↓↓自己调用自己【关键点】递归必要条件↓↓↓↓递归必需有结束条件条件相关变量必产生变化...原创 2022-02-08 18:11:05 · 537 阅读 · 0 评论 -
【唐老狮】C#——函数重载
目前我们已经学习关于函数的四个知识点:函数、ref和out、变长参数,参数默认值,其中三个知识点都是和函数参数紧密联系的。而今天我们要学习的函数重载也是和函数参数相关的,让我们开始吧。【函数重载】【理论概念】重载概念↓↓↓↓强记忆几句话↓↓↓↓函数(方法)名相同参数的数量不同或者参数的数量相同参数的类型或顺序不同函数重载的前提是,在同一个结构体或者类的语句块中。存在两个或者两个以上的同名函数,当同名满足上方...原创 2022-02-07 12:00:00 · 1253 阅读 · 0 评论 -
【唐老狮】C#——变长参数和参数默认值
之前我们对函数已经进行了学习,我们今天将来学习两个关于函数参数的小知识点。【变长参数】我们来回顾一下函数的基本语法我们知道,函数的参数可以是n个,毫不夸张的说可以是无数个,只是一般的需求不会出现写无数个参数的情况。但是就上面这个例子来说,我想要求n个整数的和,过多的参数个数对于我们来说就是件麻烦的事情了。所以C#提供给我们了一种变长参数的写法,让我们用于处理同类型多参数或者同类型不确定数量参数的问题。【基本语法...原创 2022-02-06 12:45:04 · 1408 阅读 · 0 评论 -
【唐老狮】C#——ref和out
上篇文章我们学习了函数的基础知识,今天要学习的ref和out就是需要和函数配合使用的知识点,而且是初级面试中最容易被问到的知识点。【ref和out】【为什么要使用ref和out】如果我们想要通过函数改变一个值类型变量的值,这样写是没有办法改变的。因为我们知道值类型在进行值传递时,是在栈空间中重新开辟了空间,将内容拷贝到新空间。这就是使用ref和out的原因,他们的作用是一样的,可以按地址传递对象,在函数内部...原创 2022-02-03 15:01:28 · 497 阅读 · 0 评论 -
【唐老狮】C#——函数
【函数】【函数是什么】其实我们学习到现在,我们写的大部分代码都是写在函数中的。Main就是一个静态函数。函数就是包裹了代码的特殊语句块(大括号包裹的代码称为语句块或代码块),它可以被复用,提升代码的复用率,封装代码,抽象行为。(函数也可称为方法)【函数写在哪里】被struct或class(面向对象时学习)包裹【语法】中文描述的部分可以变化【新关键字——void】代表函数没有返回值【新关键字——return...原创 2022-02-02 11:01:31 · 761 阅读 · 0 评论 -
【唐老狮】C#——复杂数据(交错数组)
我们再来复习下学习过的数组和二维数组,数组是连续挖坑填坑,二维数组是挖m行n列的坑。我们今天学习的交错数组,你可以理解为是一个特殊的二维数组,虽然它在实际开发中不常用,但是我们还是需要了解它。如果还是用坑比喻,它一个m行不确定列的坑。【交错数组】声明交错数组变量注意交错数组的“列”不能直接写明交错数组的长度获取交错数组中的元素遍历二维数组...原创 2022-01-30 16:03:51 · 533 阅读 · 0 评论 -
【唐老狮】C#——复杂数据(二维数组)
我们先来复习下数组,我们把声明变量比喻为挖坑(变量是用来存储内容的,就好像往坑里放东西)。那么数组就好像连续挖了n个坑,并且每个坑都有编号。我们今天将要学习的二维数组,用挖坑去理解,就是挖n行m列的坑,然后往坑里面放东西。【二维数组】声明二维数组变量二维数组的长度获取二维数组中的元素遍历二维数组【总结】二维数组是挖m行n列的坑一定要掌握的内...原创 2022-01-28 12:51:27 · 557 阅读 · 0 评论
分享